日志

-XX:+PrintFlagsFinal,打印JVM所有参数的值
-XX:+PrintGC,打印GC信息
-XX:+PrintGCDetails,打印GC详细信息
-XX:+PrintGCTimeStamps,打印GC的时间戳
-Xloggc:filename,设置GC log文件的位置
-XX:+PrintTenuringDistribution,查看熬过收集后剩余对象的年龄分布信息


内存设置

-Xms,设置堆的初始化内存大小
-Xmx,设置堆的最大内存
-Xmn,设置新生代内存大小
-Xss,设置线程栈大小
-XX:NewRatio,新生代与老年代比值
-XX:SurvivorRatio,新生代中Eden区与两个Survivor区的比值,默认为8,即Eden:Survivor:Survivor=8:1:1
-XX:MaxTenuringThreshold,从年轻代到老年代,最大晋升年龄。CMS 下默认为 6,G1 下默认为 15
-XX:MetaspaceSize,设置元空间的大小,第一次超过将触发 GC
-XX:MaxMetaspaceSize,元空间最大值
-XX:MaxDirectMemorySize,用于设置直接内存的最大值,限制通过 DirectByteBuffer 申请的内存
-XX:ReservedCodeCacheSize,用于设置 JIT 编译后的代码存放区大小,如果观察到这个值有限制,可以适当调大,一般够用即可


设置垃圾收集相关

-XX:+UseSerialGC,设置串行收集器
-XX:+UseParallelGC,设置并行收集器
-XX:+UseConcMarkSweepGC,使用CMS收集器
-XX:ParallelGCThreads,设置Parallel GC的线程数
-XX:MaxGCPauseMillis,GC最大暂停时间 ms
-XX:+UseG1GC,使用G1垃圾收集器


CMS 垃圾回收器相关

-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction,与前者配合使用,指定MajorGC的发生时机
-XX:+ExplicitGCInvokesConcurrent,代码调用 System.gc() 开始并行 FullGC,建议加上这个参数
-XX:+CMSScavengeBeforeRemark,表示开启或关闭在 CMS 重新标记阶段之前的清除(YGC)尝试,它可以降低 remark 时间,建议加上
-XX:+ParallelRefProcEnabled,可以用来并行处理 Reference,以加快处理速度,缩短耗时


G1 垃圾回收器相关

-XX:MaxGCPauseMillis,用于设置目标停顿时间,G1 会尽力达成
-XX:G1HeapRegionSize,用于设置小堆区大小,建议保持默认
-XX:InitiatingHeapOccupancyPercent,表示当整个堆内存使用达到一定比例(默认是 45%),并发标记阶段就会被启动
-XX:ConcGCThreads,表示并发垃圾收集器使用的线程数量,默认值随 JVM 运行的平台不同而变动,不建议修改


参数查询官网地址:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html


建议面试时最好能记住一些 CMS 和 G1 的参数,因为 Java 8 在实际生产中使用较多,这两个收集器在服务端使用较多且特点突出,被问的概率较大。


更多相关文章

  1. 内存溢出复现(OutOfMemory)
  2. Java 类的静态变量存放在哪块内存中?
  3. HotSpot VM 中对象的内存分析
  4. HotSpot 内存分配的主要规则
  5. 那些垃圾收集器,及特点
  6. 从对象生命周期的经验统计到垃圾回收算法
  7. 什么样的 Java 对象会被当垃圾回收?
  8. volatile如何避免指令重排序?原来使用了内存屏障

随机推荐

  1. Android异步任务机制之AsycTask
  2. Android 一些网址记录
  3. 通过浏览器调用Android或iOS应用
  4. Android显示圆角图片,可指定图片某几个角
  5. Android UI学习 - Tab的学习和使用
  6. iPhone相较Android机型所存在的四大硬伤
  7. android编译步骤
  8. Android 签名详解
  9. Android 查询天气源码分享
  10. 为Android内核添加hello world驱动并添加