5.8堆空间的参数设置
5.8堆空间的参数设置
官网说明:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
-XX:+PrintFlagsInitial 查看所有的参数的默认初始值 -XX:+PrintFlagsFinal 查看所有的参数的最终值(可能会存在修改,不再是初始值) -Xms: 初始堆空间内存(默认为物理内存的1/64) -Xmx: 最大堆空间内存(默认为物理内存的1/4) -Xmn: 设置新生代的大小(初始值及最大值) -XX:NewRatio 配置新生代与老年代在堆结构的占比 -XX:SurvivorRatio 设置新生代中Eden和S0/S1空间的比例 -XX:MaxTenuringThreshold 设置新生代垃圾的最大年龄 -XX:+PrintGCDetails 输出详细的GC处理日志 ①-XX:+PrintGC ②-Verbose:gc 打印GC简要信息 -XX:HandlePromotionFailure 是否设置空间分配担保
在发生Minor GC之前,虚拟机会检查老年代最大可用的连续空间是否大于新生代所有对象的总空间。
如果大于,则此次Minor GC是安全的
如果小于,则虚拟机会查看-XX:HandlePromotioinFailure设置值是否允许担保失败
如果HandlePromotionFailure=true,那么会继续检查老年代最大可用连续空间是否大于历次晋升到老年代的对象的平均大小。
如果大于,则尝试进行一次Minor GC,但这次Minor GC依然是有风险的;
如果小于,则改为进行一次Full GC;
如果HandlePromotionFailure=false,则改为进行一次Full GC。
在JDK7之后,HandlePromotionFailure参数不会再影响到虚拟机的空间分配担保策略,观察OpenJDK中源码变化,虽然源码中还定义了HandlePromotionFailure参数,但是在代码中已经不会再使用它。JDK7之后的规则变为只要老年代的连续空间大于新生代对象总大小或者历次晋升的平均大小就会进行Minor GC,否则将进行Full GC。
本文来自博客园,作者:Lz_蚂蚱,转载请注明原文链接:https://www.cnblogs.com/leizia/p/15426710.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步