JVM参数配置

部分JVM参数配置: 
1、 heap size 
a: -Xmx<n> 
指定 jvm 的最大 heap 大小,如:-Xmx=2g 

b: -Xms<n> 
指定 jvm 的最小 heap 大小,如:-Xms=2g,高并发应用建议和-Xmx一样,防止因为内存收缩/突然增大带来的性能影响。 

c: -Xmn<n> 
指定 jvm 中 New Generation 的大小,如:-Xmn256m。 这个参数很影响性能,如果你的程序需要比较多的临时内存,建议设置到512M,如果用的少,尽量降低这个数值,一般来说128/256足以使用了。 

d: -XX:PermSize=<n> 
指定 jvm 中 Perm Generation 的最小值,如:-XX:PermSize=32m。 这个参数需要看你的实际情况,可以通过jmap 命令看看到底需要多少。 

e: -XX:MaxPermSize=<n> 
指定 Perm Generation 的最大值,如:-XX:MaxPermSize=64m 

f: -Xss<n> 
指定线程桟大小,如:-Xss128k,一般来说,webx框架下的应用需要256K。 如果你的程序有大规模的递归行为,请考虑设置到512K/1M。 这个需要全面的测试才能知道。不过,256K已经很大了。 这个参数对性能的影响比较大的。 

g: -XX:NewRatio=<n> 
指定 jvm 中 Old Generation heap size 与 New Generation 的比例,在使用 CMS GC 的情况下此参数失效,如:-XX:NewRatio=2 

h: -XX:SurvivorRatio=<n> 
指定 New Generation 中 Eden Space 与一个 Survivor Space 的 heap size 比例,-XX:SurvivorRatio=8,那么在总共New Generation为10m 的情况下,Eden Space为8m 

i: -XX:MinHeapFreeRatio=<n> 
指定 jvm heap在使用率小 n的情况下,heap进行收缩,Xmx==Xms 的情况下无效,如:-XX:MinHeapFreeRatio=30 

j: -XX:MaxHeapFreeRatio=<n> 
指定 jvm heap在使用率大于n的情况下,heap进行扩张,Xmx==Xms 的情况下无效,如:-XX:MaxHeapFreeRatio=70 

k: -XX:LargePageSizeInBytes=<n> 
指定 Java heap 的分页页面大小,如:-XX:LargePageSizeInBytes=128m 

2: garbage collector 
a: -XX:+UseParallelGC 
指定在 New Generation 使用 parallel collector,并行收集,暂停app threads,同时启动多个垃圾回收thread,不能和 CMS gc 一起使用。系统吨吐量优先,但是会有较长长时间的app pause,后台系统任务可以使用此gc 

b: -XX:ParallelGCThreads=<n> 
指定 parallel collection 时启动的 thread 个数,默认是物理 processor 的个数。 

c: -XX:+UseParallelOldGC 
指定在 Old Generation 使用 parallel collector。 

d: -XX:+UseParNewGC 
指定在 New Generation 使用 parallel collector,是 UseParallelGC 的 gc 的升级版本,有更好的性能或者优点,可以和 CMS gc 一起使用。 

e: -XX:+CMSParallelRemarkEnabled 
在使用 UseParNewGC 的情况下,尽量减少 mark 的时间。 

f: -XX:+UseConcMarkSweepGC 
指定在 Old Generation 使用 concurrent cmark sweep gc,gc thread 和 app thread 并行 ( 在 init-mark 和 remark 时 pause app thread)。app pause 时间较短,适合交互性强的系统,如 web server。 

g: -XX:+UseCMSCompactAtFullCollection 
在使用 concurrent gc 的情况下,防止 memory fragmention,对 live object 进行整理,使 memory 碎片减少。 

h: -XX:CMSInitiatingOccupancyFraction=<n> 
指示在 old generation 在使用了 n% 的比例后,启动 concurrent collector,默认值是 68,如:-XX:CMSInitiatingOccupancyFraction=70。 

i: -XX:+UseCMSInitiatingOccupancyOnly 
指示只有在 old generation 在使用了初始化的比例后 concurrent collector 启动收集。 

3、others 
a: -XX:MaxTenuringThreshold=<n> 
指定一个 object 在经历了 n 次 young gc 后转移到 old generation 区,在 linux64 的 java6 下默认值是 15,此参数对于 throughput collector 无效,如:-XX:MaxTenuringThreshold=31。 

b: -XX:+DisableExplicitGC 
禁止 java 程序中的 full gc,如 System.gc() 的调用. 最好加上么,防止程序在代码里误用了。对性能造成冲击。 

c: -XX:+UseFastAccessorMethods 
get,set 方法转成本地代码。 

d: -XX:+PrintGCDetails 
打应垃圾收集的情况如: [GC 15610.466: [ParNew: 229689K->20221K(235968K),0.0194460 secs] 1159829K->953935K(2070976K),0.0196420 secs]。 

e: -XX:+PrintGCTimeStamps 
打应垃圾收集的时间情况,如: [Times: user=0.09 sys=0.00,real=0.02 secs]。 

f: -XX:+PrintGCApplicationStoppedTime 
打应垃圾收集时,系统的停顿时间,如: Total time for which application threads were stopped: 0.0225920 seconds。

原文地址:https://www.cnblogs.com/Jenny-sider/p/6171232.html