标签:sync article cee col points gen 实现 定制 reads
本文主要是工作过程中总结的一些jvm调优的参数和注意的地方,作为一个备忘录,先占个坑,有时间在来细化具体的实例。
如果需要查看新生对象晋升老年代的实际阈值, 可以使用参数 -XX:+PrintTenuringDistribution
java8中使用这个参数没有详细输出各个年龄的分布,因为java8默认的收集器是ParallelGC和ParallelGC Old,
这个收集器注重吞吐量没有用年龄,所以没必要打印详细的年龄分布。只会显示晋升到老年代的阈值还有期望的Survivor区的预期大小。
合理分配新生代和老生代-Xmn 新生代大小, -XX:SurvivorRatio Eden和Survivor空间的比例 默认是8 设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代) -XX:NewRatio=4 默认是2
老年代和新生代大小比例调节:如果应用存在大量的临时对象,应该选择更大的年轻代;如果存在相对较多的持久对象,年老代应该适当增大。但很多应用都没有这样明显的特性,在抉择时应该根据以下两点:
a.本着Full GC尽量少的原则,让年老代尽量缓存常用对象,JVM的默认比例1:2也是这个道理
b.通过观察应用一段时间,看其他在峰值时年老代会占多少内存,在不影响Full GC的前提下,根据实际情况加大年轻代,比如可以把比例控制在1:1。但应该给年老代至少预留1/3的增长空间
输出如下
发生时间 操作 线程 总数 正在运行 等待阻塞
vmop [threads: total initially_running wait_to_block] [time: spin block sync cleanup vmop] page_trap_count
0.462: ForceSafepoint [ 8 0 1 ] [ 0 0 0 0 0 ] 0
定制JIT编译的参数 -XX:CompileCommand
待解决:
GC overhead limit exceeded问题
标签:sync article cee col points gen 实现 定制 reads
原文地址:https://www.cnblogs.com/chenfangzhi/p/10328423.html