常用的 JVM 配置参数有哪些?
常用的 JVM 配置参数
JVM 配置参数可以用来控制 Java 程序的内存分配、垃圾回收、性能优化等。以下是一些常用的 JVM 配置参数:
1. 堆内存相关参数
-Xms
:设置 JVM 初始堆内存大小。例如:-Xms512m
设置初始堆内存为 512MB。-Xmx
:设置 JVM 最大堆内存大小。例如:-Xmx2g
设置最大堆内存为 2GB。-Xmn
:设置新生代的大小。例如:-Xmn512m
设置新生代内存为 512MB。-XX:NewSize
:设置新生代的初始内存大小。-XX:MaxNewSize
:设置新生代的最大内存大小。-XX:SurvivorRatio
:设置 Eden 区与 Survivor 区的内存比例。例如,-XX:SurvivorRatio=8
表示 Eden 区和每个 Survivor 区的内存比例为 8:1。
2. 垃圾回收相关参数
-XX:+UseSerialGC
:启用 Serial GC,适用于单核或小内存的环境。-XX:+UseParallelGC
:启用 Parallel GC,适用于多核 CPU 和高吞吐量应用。-XX:+UseConcMarkSweepGC
:启用 CMS(Concurrent Mark-Sweep)垃圾回收器,减少停顿时间。-XX:+UseG1GC
:启用 G1 垃圾回收器,适用于大堆和低延迟需求的场景。-XX:+UseZGC
:启用 ZGC(Z Garbage Collector),适用于大堆内存和低停顿需求的场景。-XX:+UseShenandoahGC
:启用 Shenandoah 垃圾回收器,适用于低延迟应用。-XX:ParallelGCThreads
:设置并行垃圾回收线程的数量。通常与 Parallel GC 一起使用。-XX:ConcGCThreads
:设置并发垃圾回收线程的数量。通常与 CMS 一起使用。-XX:+PrintGCDetails
:打印详细的垃圾回收日志,帮助分析 GC 行为。-Xlog:gc*
:开启 GC 日志输出(Java 9 及以上版本的日志输出方式)。
3. JVM 调优相关参数
-XX:MaxGCPauseMillis
:设置垃圾回收最大停顿时间目标。适用于 G1 和 ZGC。-XX:GCTimeRatio
:控制 GC 吞吐量,计算公式为:吞吐量 = 1 / (1 + GCTimeRatio)
,较低的 GCTimeRatio 会导致更多的垃圾回收。-XX:InitiatingHeapOccupancyPercent
:设置 G1 在启动时触发垃圾回收的堆内存占用比例。-XX:NewRatio
:设置新生代和老年代的内存比例。例如,-XX:NewRatio=3
表示新生代占堆的 1/4,老年代占 3/4。
4. 线程相关参数
-Xss
:设置每个线程的栈内存大小。例如:-Xss512k
设置每个线程的栈内存为 512KB。-XX:ThreadStackSize
:设置每个线程的栈内存大小。与-Xss
参数类似。
5. JIT(Just-In-Time)编译相关参数
-XX:CompileThreshold
:设置 JIT 编译的优化阈值。指定方法调用次数或者代码行数,当达到此阈值时,JIT 编译器将对该方法进行优化。-XX:+TieredCompilation
:启用分层编译,既使用解释执行,又使用 JIT 编译来提高启动速度和整体性能。
6. 直接内存(堆外内存)相关参数
-XX:MaxDirectMemorySize
:设置 JVM 允许的最大直接内存大小(堆外内存)。例如:-XX:MaxDirectMemorySize=512m
。
7. 其他常见参数
-D
:设置系统属性。例如:-Dfile.encoding=UTF-8
设置文件编码为 UTF-8。-XX:+HeapDumpOnOutOfMemoryError
:发生内存溢出时自动生成堆转储文件(heap dump)。-XX:HeapDumpPath
:指定堆转储文件的路径。-XX:+UseCompressedOops
:启用压缩对象指针,减少 64 位系统上对象的内存占用。
总结
常用的 JVM 配置参数包括:
- 堆内存相关参数:如
-Xms
、-Xmx
、-Xmn
等; - 垃圾回收相关参数:如
-XX:+UseParallelGC
、-XX:+UseG1GC
、-XX:+UseZGC
等; - JVM 调优相关参数:如
-XX:MaxGCPauseMillis
、-XX:GCTimeRatio
等; - 线程相关参数:如
-Xss
、-XX:ThreadStackSize
; - JIT 编译相关参数:如
-XX:CompileThreshold
、-XX:+TieredCompilation
; - 直接内存相关参数:如
-XX:MaxDirectMemorySize
; - 其他常见参数:如
-D
、-XX:+HeapDumpOnOutOfMemoryError
。
合理配置这些参数可以优化 JVM 性能、减少垃圾回收带来的影响,并提高应用的稳定性和响应速度。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2022-12-11 1827. 最少操作使数组递增