如何选择合适的垃圾收集器?
评价垃圾收集器的指标:吞吐量、停顿时间
除非程序对停顿时间有严格要求(CMS,G1),如果没有让JVM自动选择,如果有必要可以通过调整堆的大小满足性能要求:
- 如果应用程序非常小(100MB内),那么选择:-XX:+UseSerialGC(Serial、SerialOld)
- 如果应用程序是单核处理器 ,并且没有停顿时间的要求,那么让JVM自行选择,或者选择:-XX:+UseSerialGC
- 如果应用有性能停顿时间的要求,但停顿时间并不是太严格,可以让JVM自行选择,或者使用:-XX:+UseParallelGC(ParNew、Parallel Old、parallel Scavenge)
- 如果应用程序有一个 非常严格的停顿时间要求,则选择:-XX:+UseConcMarkSweepGC或者-XX:+UseG1GC
JVM参数
标准参数
-version -help -server
非标准参数(JDK版本变化可能会导致参数变化)
-X参数
java -Xint -version 改成解释执行方式
java -Xcomp -version 改成编译型执行方式
java -Xmixed -version 改成混合
-XX参数
-XX:name=value 对某个参数进行赋值
-XX:+/- name 启用或禁用
&nesp;&nesp;&nesp;&nesp;-XX:+UseG1GC;-XX:MaxHeapSize=100M(给堆内存设置最大值为100M)
针对一个Java进程而言