第八章 有关垃圾收集的关键参数
一些命令行参数可以用来选择垃圾收集器,指定堆或代的大小,修改垃圾收集行为,获取垃圾收集统计数据。本章给出一些最常用的参数。有关各种各样参数更多完整的列表和详细信息可以参见第九章。注意:指定的数字可以以“m”或“M”结尾表示兆字节,以“k”或“K”结尾表示千字节,以“g”或“G”结尾表示千兆字节。
垃圾收集器的选择
–XX:+UseSerialGC | Serial(串行收集器) |
–XX:+UseParallelGC | Parallel(并行收集器) |
–XX:+UseParallelOldGC | Parallel compacting(并行压缩收集器) |
–XX:+UseConcMarkSweepGC | Concurrent mark–sweep (CMS) |
垃圾收集器统计
–XX:+PrintGC | 每次垃圾收集时输出基本信息。 |
–XX:+PrintGCDetails | 每次垃圾收集时输出更详细的信息。 |
–XX:+PrintGCTimeStamps | 在每次垃圾收集事件开始输出时间戳。与–XX:+PrintGC或–XX:+PrintGCDetails一同使用。 |
堆和代的大小
–Xmsn | 参见第五章 | 堆初始大小,以字节为单位。 |
–Xmxn | 参见第五章 | 堆最大值,以字节为单位。 |
–XX:MinHeapFreeRatio=minimum and –XX:MaxHeapFreeRatio=maximum | 40 (最小),70 (最大) | 堆空闲空间与总大小的比值范围。应用在每个代上。例如,如果最小值为30并且某个代的空闲百分比低于30%时,这个代会扩展以保持30%的空闲空间。相似的,如果最大值是60并且空闲百分比超过60%,代会收缩以保持只有60%的空闲空间。 |
–XX:NewSize=n | 依赖平台 | 年轻代的初始大小,以字节为单位。 |
–XX:NewRatio=n | 客户端2,服务器8 | 年轻代和年老代的比例。例如,如果n是3,比例是1:3,Eden和生还者区的加和是年轻代和年老代大小总和的1/4。 |
–XX:SurvivorRatio=n | 32 | 每个生还者区与Eden区的比例。例如,如果n是7,每个生还者区是年轻代的1/9(不是1/8,因为有2个生还者区)。 |
–XX:MaxPermSize=n | 依赖平台 | 持久代的最大值。 |
并行和并行压缩收集器的选项
–XX:ParallelGCThreads=n | CPU的个数 | 垃圾收集的线程数。 |
–XX:MaxGCPauseMillis=n | 无 | 期望垃圾收集器的暂停时间小于等于n。 |
–XX:GCTimeRatio=n | 99 | 设置垃圾收集时间占总时间的目标为 1/(1+n)。 |
CMS收集器的选项
–XX:+CMSIncrementalMode | 禁用 | 启用增量模式。并行阶段是增量的,并行阶段周期性暂停以释放处理器给应用程序。 |
–XX:+CMSIncrementalPacing | 禁用 | 是否允许CMS处理器基于应用程序行为自动放弃之前的处理器。 |
–XX:ParallelGCThreads=n | CPU的个数 | 年轻代并行收集和年老代并行收集部分的线程数。 |