性能参数
参数名 | 含义 | 默认值 | 描述 |
---|---|---|---|
-Xms | 初始堆大小 | 物理内存的1/64(<1GB) | 一般和Xmx设置成一致的,避免在GC完之后动态的调整堆大小,调整内存会消耗系统资源,对应用会有影响 |
-Xmx | 最大堆 | 物理内存的1/4(<1GB) | 一般和Xms会设置成一致的,避免在GC完之后动态的调整堆大小,调整内存会消耗系统资源,对应用会有影响 |
-Xss | 每个线程的堆栈大小 | 256k/1M | 1.7之前是256K,1.8改成1M |
-XX:NewRatio | 年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代) | 2 | Old/New的比值,默认值为2,表示Old代与Young代的比值为2比1,使用G1时一般此参数不设置,由G1来动态的调整,逐渐调整至最优值 |
-XX:MaxTenuringThreshold | 新生代晋升老年代阈值 | 15 | 每个对象MinorGC后,年龄就增加1,当超过这个参数值时,就进入老年代 |
-XX:PreBlockSpin | 初始自旋次数 | 10 | 使用自旋锁时初始自旋次数,在此基础上上下浮动,生效前提开UseSpinning |
-XX:G1HeapRegionSize | G1内堆内存区块大小 | (Xms + Xmx ) /2 / 2048 , 不大于32M,不小于1M,且为2的指数 | G1将堆内存默认均分为2048块,1M<region<32 M,当应用频繁分配大对象时,可以考虑调整这个阈值,因为G1的Humongous区域只能存放一个大对象,适当调整Region大小,尽量让其刚好超过大对象的两倍大小,这样就能充分利用Region的空间 |
-XX:GCPauseIntervalMillis | 最短多长可以进行一次gc |
功能开关
参数名 | 含义 | 默认值 | 描述 |
---|---|---|---|
-XX:+UseSpinning | 是否开启自旋锁 | 1.7以后默认开启 | 对synchronized的优化,当运行到synchronized的代码块时,会尝试自旋,如果在自旋期间获取到了锁,那么下次会逐渐的增加自旋时间,反之则减少自旋时间 |
-XX:+UseG1GC | 使用G1做垃圾收集器 | 1.8以上默认开启 | 在1.8+后默认使用,在大内存情形下能够发挥更加卓越的性能,相较于其他GC最大的差异是其每次回收老年代时只会回收最值得回收的部分内存空间,而不是整个老年代 |
-XX:+UseBiasedLocking | 是否使用偏向锁 | 默认开启 | 、当synchronized代码块只被一个线程使过时,将偏向锁的ThreadID设置为自身线程ID,这样每次运行时只要比对ThreadID和自身一致就直接运行。如果线程较多可以选择关闭,起到一定优化作用 |
调试参数
参数名 | 含义 | 默认值 | 描述 |
---|---|---|---|
-XX:+HeapDumpOnOutOfMemoryError | 生成oom的dump文件 | 默认关闭 | 可以使用jprofiler分析dump文件获取oom的原因 |
-XX:+PrintGCDetails | 关闭 | 打印GC的details信息 | |
-XX:+HeapDumpOn某某某Error | 导出某某某异常的Dump文件 |
其它参数还有很多,我没理解,所以没写…