1.前期知识
其实掌握的知识点已经够多了,我们要做的就是一次次应用和实战,把他串联起来就可以学以致用
young和old的比例是1:2
垃圾回收采用的是ParNew + CMS
查看jc的信息命令 jstat -gcutil pid 1000, 可以看出多久来一次YGC
-XX:+PrintGCDateStamps:打印 gc 发生的时间戳。
-XX:+PrintTenuringDistribution:打印 gc 发生时的分代信息。
-XX:+PrintGCApplicationStoppedTime:打印 gc 停顿时长
-XX:+PrintGCApplicationConcurrentTime:打印 gc 间隔的服务运行时长
-XX:+PrintGCDetails:打印 gc 详情,包括 gc 前/内存等。
-Xloggc:../gclogs/gc.log.date:指定 gc log 的路径
gc 吞吐量是 95%,它指的是 JVM 运行业务代码的时长占 JVM 总运行时长的比例,这个比例确实有些低了
增大 young 区,YGC 的时长也会迅速增大。 GC 的年轻代提升机制,每次 GC 后,JVM 存活代数大于 MaxTenuringThreshold 的对象提升到老年代。当然,JVM 还有动态年龄计算的规则:按照年龄从小到大对其所占用的大小进行累积,当累积的某个年龄大小超过了 survivor 区的一半时,取这个年龄和 MaxTenuringThreshold 中更小的一个值,作为新的晋升年龄阈值,但看各代总的内存大小,是达不到 survivor 区的一半的。
2.做的动作以及动作的依据
分代调整
偏向锁停顿
young 区大小翻倍
3.参考文章
juejin.cn/post/718404…