本文從堆棧內存、回收器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前后打印出堆的信息。 |
| 日志文件的輸出路徑。 |