本文从堆栈内存、回收器GC两方面介绍常见的JVM参数并提供配置示例。
调优堆栈内存
堆栈大小典型配置参数
配置参数 | 说明 | 示例 |
| 设置最大堆大小。 |
|
| 设置JVM初始内存。 |
|
| 设置年轻代大小。 |
|
| 设置线程的栈大小。 |
说明 JDK 5.0版本以后每个线程栈大小为1 MB,JDK 5.0以前版本每个线程栈大小为256 KB。请依据应用的线程所需内存大小进行调整。在相同物理内存下,减小该值可以生成更多的线程。但是操作系统对一个进程内的线程个数有一定的限制,无法无限生成,一般在3000个~5000个。 |
| 设置年轻代和年老代的比值。 |
|
| 年轻代中Eden区与两个Survivor区的比值。 |
|
| 设置持久代大小。 |
|
| 设置垃圾最大年龄。 |
|
调优回收器GC(Garbage Collection)
吞吐量优先的GC典型配置参数
配置参数 | 说明 | 示例 |
| 选择垃圾收集器为并行收集器。 |
|
| 配置并行收集器的线程数,即同时多少个线程一起进行垃圾回收。 说明 此值建议配置与处理器数目相等。 |
|
| 配置年老代垃圾收集方式为并行收集。 说明 JDK 6.0支持对年老代并行收集。 |
|
| 设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。 |
|
| 设置此选项后,并行收集器自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低响应时该间或者收集频率,该值建议使用并行收集器时,并且一直打开。 |
|
响应时间优先的GC典型配置参数
配置参数 | 说明 | 示例 |
| 设置年老代为并发收集。 说明 配置了 |
|
| 设置年轻代为并行收集。 可与CMS收集同时使用。JDK 5.0以上版本,JVM根据系统配置自行设置,无需再设置此值。 |
|
| 由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。 |
|
| 打开对年老代的压缩。 说明 该值可能会影响性能,但是可以消除碎片。 |
|
用于辅助的GC典型配置参数
配置参数 | 说明 |
| 用于输出GC日志。 |
| 用于输出GC日志详情。 |
| 用于输出GC时间戳(JVM启动到当前日期的总时长的时间戳形式)。示例如下:
|
| 用于输出GC时间戳(日期形式)。示例如下:
|
| 在进行GC前后打印出堆的信息。 |
| 日志文件的输出路径。 |