JVM参数
刚维护我们web系统,统计下JVM 参数设置情况。
| 参数 | 描述 |
-server |
JVM server 模式,会开启默认的配置 |
-Xmx5500m |
堆内存最大5500M |
-Xms5500m |
堆内存最小5500M |
-Xmn2500m |
新生代2500M |
-XX:PermSize=512m |
Permgen取默认512M |
-XX:MaxPermSize=512m |
Permgen最大512M |
-XX:+DisableExplicitGC |
关掉System.gc() |
-XX:+UseParNewGC |
新生代垃圾回收算法(stop-the-world) |
-XX:+UseConcMarkSweepGC |
设置老年代垃圾回收算法CMS |
-XX:+CMSParallelRemarkEnabled |
开启CMS并行标记 |
-XX:+UseCMSCompactAtFullCollection |
在CMS Full GC时压缩内存,CMS是不会移动内存的,不采用压缩会产生很多碎片 |
-XX:+UseFastAccessorMethods |
原始类型快速优化 |
-XX:+UseCMSInitiatingOccupancyOnly |
仅仅使用手动定义初始化定义开始CMS收集 |
-XX:+UseCompressedOops |
启用压缩指针,在32GB内存下,不需要64bit来表示一个对象引用,压缩为32bit |
-XX:-ReduceInitialCardMarks |
取消Card-Marking 优化,在6u18版本下,大对象young gc 会导致jvm Crash |
-XX:ReservedCodeCacheSize=128M |
设置CodeCache 内存大小 |
-XX:+HeapDumpOnOutOfMemoryError |
在OOM时dump |
-XX:HeapDumpPath=/home/admin |
dump路径 |
有关CMS的介绍。
值得注意的是,老年代使用CMS, 新生代使用 UseParNewGC 比使用UseParallelGC ,在young gc 会使停顿时间变长。因为使用UseParNewGC young gc时,从新生代转移对象到老年代会使用Best-fit 算法,而UseParallelGC不需要。
UseFastAccessorMethods 会对JVM认为的Accessor Methods 采用快速版本的优化,但是这些Methods没有调用计数,因此无法被JIT 编译成Native code,始终会解释执行,性能有可能反而变慢。参考jdk bug。
ReservedCodeCacheSize 是CacheCode 大小,参考之前的文章。
还有一些参数:
-XX:MaxTenuringThreshold=n 设置老年代阈值,默认15
XX:+PrintTenuringDistribution 判断具体年龄分布

浙公网安备 33010602011771号