Java8为例
日志
1、-XX:+PrintFlagsFinal,打印JVM所有参数的值
2、-XX:+PrintGC,打印GC信息
3、-XX:+PrintGCDetails,打印GC详细信息
4、-XX:+PrintGCTimeStamps,打印GC的时间戳
5、-Xloggc:filename,设置GC log文件的位置
6、-XX:+PrintTenuringDistribution,查看熬过收集后剩余对象的年龄分布信息
内存设置
1、-Xms,设置堆的初始化内存大小
2、-Xmx,设置堆的最大内存
3、-Xmn,设置新生代内存大小
4、-Xss,设置线程栈大小
5、-XX:NewRatio,年轻代与老年代比值
6、-XX.SurvivorRatio,年轻代中Eden区与两个Survivor区的比值,默认为8,即 Eden:Survivor: Survivor=8:1:1
7、-XX:MaxTenuringThreshold,从年轻代到老年代,最大晋升年龄。CMS下默认为6,G1下默认为15
8、-XX:MetaspaceSize,设置元空间的大小,第一次超过将触发GC
9、-XX:MaxMetaspaceSize,元空间最大值
10、-XX:MaxDirectMemorySize,用于设置直接内存的最大值,限制通过DirectByteBuffer 申请的内存
11、-XX: ReservedCodeCacheSize,用于设置JIT编译后的代码存放区大小,如果观察到这个值有限制,可以适当调大,一般够用即可
设置垃圾收集相关
1、-XX:+UseSerialGC,设置串行收集器
2、-XX:+UseParallelGC,设置并行收集器
3、-XX:+UseConcMarkSweepGC,使用CMS 收集器
4、-XX:ParallelGCThreads,设置Parallel GC的线程数
5、-XX:MaxGCPauseMillis,GC最大暂停时间ms
6、-XX:+UseG1GC,使用G1垃圾收集器
CMS 垃圾回收器相关
1、-XX:+UseCMSInitiatingOccupancyOnly
2、-XX:CMSInitiatingOccupancyFraction,与前者配合使用,指定Major GC的发生时机
3、-XX:+ExplicitGCInvokesConcurrent,代码调用System.gc()开始并行Full GC,建议加上这个参数
4、-XX:+CMSScavengeBeforeRemark,表示开启或关闭在CMS重新标记阶段之前的清除(YGC)尝试,它可以降低remark时间,建议加上
5、-XX:+ParallelRefProcEnabled,可以用来并行处理Reference,以加快处理速度,缩短耗时
G1垃圾回收器相关
1、-XX:MaxGCPauseMillis,用于设置目标停顿时间,G1会尽力达成
2、-XX:G1HeapRegionSize,用于设置小堆区大小,建议保持默认
3、-XX:InitiatingHeapOccupancyPercent,表示当整个堆内存使用达到一定比例(默认是45%),并发标记阶段就会被启动
4、-XX:ConcGCThreads,表示并发垃圾收集器使用的线程数量,默认值随JVM运行的平台不同而变动,不建议修改
参数查询官方地址:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
建议面试时最好能记住CMS和G1的参数,特点突出使用较多,被问的概率大
Was this helpful?
0 / 0