background image

无法满足此时间,JVM

 

会自动调整年轻代大小,以满足此值。

-XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相
应的 Survivor

 

区比例,以达到目标系统规定的最低响应时间或者收集频率等。

 

此参数建议使用并行收集器时,一直打开。
并发收集器(响应时间优先) 
-XX:+UseParNewGC:设置年轻代为并发收集。可与 CMS 收集同时使用。JDK5.0 以上,
JVM

 

会根据系统配置自行设置,所以无需再设置此值。

CMS,全称 Concurrent Low Pause Collector,是 jdk1.4 后期版本开始引入的新 gc 算法,在
jdk5 和 jdk6 中得到了进一步改进,它的主要适合场景是对响应时间的重要性需求大于对
吞吐量的要求,能够承受垃圾回收线程和应用线程共享处理器资源,并且应用中存在比
较多的长生命周期的对象的应用。CMS 是用于对 tenured generation 的回收,也就是年老代
的回收,目标是尽量减少应用的暂停时间,减少 FullGC 发生的几率,利用和应用程序线

 

程并发的垃圾回收线程来标记清除年老代。
-XX:+UseConcMarkSweepGC : 设 置 年 老 代 为 并 发 收 集 。 测 试 中 配 置 这 个 以 后 , -
XX:NewRatio=4 的配置失效了。所以,此时年轻代大小最好用-Xmn

 

设置。

-XX:CMSFullGCsBeforeCompaction=:由于并发收集器不对内存空间进行压缩、整理,所

以运行一段时间以后会产生 碎片 ,使得运行效率降低。此参数设置运行次 FullGC 以后

 

对内存空间进行压缩、整理。
-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可

 

以消除内存碎片。
-XX:+CMSIncrementalMode:设置为增量收集模式。一般适用于单 CPU

 

情况。

-XX:CMSInitiatingOccupancyFraction=70:表示年老代空间到 70%时就开始执行 CMS,确

 

保年老代有足够的空间接纳来自年轻代的对象。

 

注:如果使用 throughput collector   

和 concurrent low pause collector 这两种垃圾收集器,需

 

要适当的挺高内存大小,为多线程做准备。

其它
-XX:+ScavengeBeforeFullGC:新生代 GC 优先于 Full GC

 

执行。

-XX:-DisableExplicitGC:禁止调用 System.gc(),但 JVM 的 gc

 

仍然有效。

-XX:+MaxFDLimit

 

:最大化文件描述符的数量限制。

-XX:+UseThreadPriorities:启用本地线程优先级 API

 

,即使 java.lang.Thread.setPriority() 生

 

效,反之无效。
-XX:SoftRefLRUPolicyMSPerMB=0

: 软引用 的对象在最后一次被访问后能存活 0 毫秒

(默认为 1

 

秒)。

-XX:TargetSurvivorRatio=90:允许 90%的 Survivor 空间被占用(默认为 50%)。提高对于
Survivor

——

 

的使用率

超过就会尝试垃圾回收。

辅助信息
-XX:-CITime:打印消耗在 JIT

 

编译的时间

-XX:ErrorFile=./hs_err_pid.log

 

:保存错误日志或者数据到指定文件中

-XX:-ExtendedDTraceProbes:开启 solaris 特有的 dtrace

 

探针

-XX:HeapDumpPath=./java_pid.hprof

 

:指定导出堆信息时的路径或文件名

-XX:-HeapDumpOnOutOfMemoryError

 

:当首次遭遇内存溢出时导出此时堆中相关信息

-XX:OnError=";":出现致命 ERROR

 

之后运行自定义命令

-XX:OnOutOfMemoryError=";"

 

:当首次遭遇内存溢出时执行自定义命令