
jvm
文章平均质量分 78
jvm相关优化技艺
dzend
这个作者很懒,什么都没留下…
展开
-
深入理解jvm执行引擎
由上图可见,java的编绎过程分为二步。第一步由java文件编绎成class文件,这个过程叫做前端编绎;第二步把需要加载到jvm中的class文件中的字节码编绎成操作系统能够识别的机器码,这个过程叫做后端编绎。原创 2024-04-03 14:52:27 · 2030 阅读 · 1 评论 -
Java线上问题的排查思路
编写详细的问题分析报告,记录问题的发生、处理过程及解决方案。总结经验教训,更新相关文档和最佳实践。原创 2024-12-31 10:00:02 · 582 阅读 · 0 评论 -
CMS、G1 和 ZGC 垃圾回收器对比
CMS、G1 和 ZGC 垃圾回收器对比原创 2024-12-25 11:39:58 · 1240 阅读 · 0 评论 -
jvm调优化-如何选择垃圾收集器?
到目前为止,还没有一款完美的垃圾收集器,只有适合对应用相关业务场景。垃圾收集器的选择相关的因素与一些准则。原创 2024-04-12 10:41:49 · 480 阅读 · 0 评论 -
jvm调优-如何分析GC日志
2、Full GC (Metadata GC Threshold)是指这是一次full gc,括号里是gc的原因,PSYoungGen是年轻代的GC,ParOldGen是才年代的GC,Metaspace是元空间的GC。6、34822K->34822K(1081344K),这三个数字分别对应GC之前元空间内存的大小,GC之后元空间内存占用,以及整个元空间内存的大小。5、30092K->22612K(1085952K),这三个数字分别对应GC之前占用堆内存的大小,GC之后堆内存占用,以及整个堆内存的大小。原创 2024-04-11 16:49:47 · 408 阅读 · 0 评论 -
jvm调优实战-阿里Arthas使用详解
Arthas是阿里在2018年9月开源的Java诊断工具。支持JDK6+,采用交互模式。可以很方便用于线上定位问题。官方文档地址:https://alibaba.github.io/arthas。原创 2024-04-11 11:39:54 · 611 阅读 · 0 评论 -
jvm运行情况预估
执行下面指令能计算出一些关键数据,有了这些数据,先给JVM参数一些的初始的,比堆内存大小、年轻代大小 、Eden和Srivivor的比例,老年代的大小,大对象的阈值,大龄对象进行老年代的阈值等。原创 2024-04-10 22:40:19 · 735 阅读 · 0 评论 -
jvm调优案例分析-分析oom问题
代码中可能存大对象分配,无法获得足够的内存分配可能发生内存泄露,导致内存被无效占用以于于耗尽。原创 2024-04-09 23:27:17 · 181 阅读 · 0 评论 -
jvm调优案例分析-window通过jstack查找死锁的进程
我们经常会遇到java程序遇死锁的问题,也会经常遇到。原创 2024-04-09 23:19:06 · 1253 阅读 · 0 评论 -
JVM调优工具详解-jps、jmap、jstat、jstack
用于查看相关java线程的相关信息。原创 2024-04-08 23:32:30 · 598 阅读 · 2 评论 -
深入解析JVM虚拟机-G1垃圾收集器
G1(Garbage-First)是一款面向服务器的垃圾收集器,,以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征。原创 2024-04-08 12:34:41 · 2722 阅读 · 0 评论 -
JVM调优案例分析-亿级流量电商系统优化(ParNew+CMS)
一个日访问量达亿次的流量电商网站,一般每个用户平均点击次数为20-30次,估算日活用户500万左右,假设订单转化率为10%,每日的订单数为50万,在日常中一般集中在3-4个小时内产生,每秒钟大概产生10几个订单;原创 2024-04-07 22:18:16 · 465 阅读 · 0 评论 -
关于JVM-三色标记算法剖析
白色:表示对象未被垃圾收集器访问过,这是可达性分析开始的阶段,所有的对象都是白色,如果分析结束阶段,还是白色,即代表不可达。灰色:表示对象被垃圾收集器访问过,但是至少还有一个引用没有被扫描过。黑色:表示对象已被垃圾收集器访问过了,并且这个对象所有对象都被扫描过了,它是安全存活的,如果有其它对象引用指向了黑色对象,无须重新扫描一遍。黑色对象不可能直接指向某个白色对象。原创 2024-04-07 16:29:24 · 487 阅读 · 0 评论 -
深入理解JVM垃圾收集器
目前市面常见的垃圾收集器有Serial、ParNew、Parallel、CMS、Serial Old、Parallel Old、G1、ZGC以及有二种不常见的Epsilon、Shenandoah的,从上图可以看到有连线的的垃圾收集器是可以组合使用,是年轻代+老年代。为什么会出现这么多的垃圾收集器?因为,直到现在也没有最好的垃圾收集器出现,更没有万能的垃圾收集器,只能按照使用场景来选择适合的垃圾收集器。如果存在完美的垃圾收集器,那到JAVA虚拟机就不会实现这么多不同的垃圾收集器。原创 2024-04-06 21:57:40 · 949 阅读 · 1 评论 -
深入理解JVM垃圾收集算法
深入理解JVM垃圾收集算法,详细讲解了分代收集理论、标记复制算法、标记整理算法、标记清除算法原创 2024-04-06 10:11:39 · 636 阅读 · 1 评论 -
深入理解JVM后端优化技术-逃逸分析(Escape Analysis)
当一个对象在方法里面被定义后,它可能让外部方法所引用,作为调用参数传递到其它的方法中,这种称为方法逃逸;还有可能被外部线程访问到,赋值给可以在其它线程中访问的实例数量,这种称为线程逃逸;从不逃逸、方法逃逸到线程逃逸,称为对象由低到高的不同逃逸程度。左侧的代码,d对象不会让外部引用,只会用在方法中使用,所以不会发生逃逸。而右侧的代码中,d对象一看就有其它方法使用了,就会产生逃逸。JDK8中默认开启了逃逸分析,可以添加参数-XX:-DoEscapeAnalysis主动关闭逃逸分析。 如果能分析出原创 2024-04-04 21:14:03 · 870 阅读 · 1 评论 -
jvm优化原则
对象在Eden创建并经过第一次Minor GC后仍存活,并且能被Survivor容纳,将移动到Survivor空间中,并将年龄设置为1.对象在Surviro区很挺过一次Minor GC年龄就会增加1,当年龄达到阈值时(默认为15岁,CMS收集器默认为6),将会移动到老年代。大对象需要大量连续的存储空间。当然,如果minor gc后剩余存活的需要挪动到老年代的对象大小还是老年代可用空间,那么也会触发Full GC,full GC之后还是没有空间存放miror GC存活的对象,也会发生"OOM".原创 2024-03-28 21:37:49 · 554 阅读 · 1 评论 -
深入理解JVM后端优化技术-锁粗化(Lock Coarsening)
看上图,对于相邻的几个同步块如果使用同一个锁实例,那么JIT编绎器会将这些同步块合并成一个大的同步块,从而避免一个线程反复申请、释放锁所导致的开销。原创 2024-04-05 13:08:02 · 563 阅读 · 1 评论 -
深入理解JVM后端优化技术-锁消除(Lock Elision)
这个优化措施主要针对synchronized关键字。当JVM检测到一个锁的代码不存在多线程竞争时,会对这个对象的锁进行锁消除。多线程并发资源竞争是一个很复杂的场景,所以要检测是否存在多线程竞争是不容易的。但是有一个例外,如果一个方法没有发生逃逸,那么它的内部的锁都是不存在竞争的。原创 2024-04-05 11:34:41 · 1010 阅读 · 1 评论 -
深入理解JVM后端优化技术-方法内联
jvm只是负责依次将字节码指令逐次转换成机器码。而在转换过程中,JVM会对做一些代码优化,不管怎么样,就算程序员写出了很烂的代码,JVM也能保持一个不错的执行效率。这就是。原创 2024-04-04 16:16:56 · 420 阅读 · 1 评论 -
jvm流程图
从以上流程图不难看出,一个.java源文件通过javac指令编辑成,再到加载进jvm的流程。类加载器在jdk1.8版本由引导类加载器(BootstrapClassLoader)、扩展类加载器(ExtClassLoader)、应用类加载器(AppClassLoader)以及其它自定义类加载器四个种类。启动类加载器(引导类加载器,BootstrapClassLoader):这个ClassLoader类是用C++/C语言编写的,负责将<JAVA_HOME>/lib目录、-Xbootcl原创 2024-03-28 20:51:12 · 224 阅读 · 1 评论