常用的 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 配置参数包括:

  1. 堆内存相关参数:如 -Xms-Xmx-Xmn 等;
  2. 垃圾回收相关参数:如 -XX:+UseParallelGC-XX:+UseG1GC-XX:+UseZGC 等;
  3. JVM 调优相关参数:如 -XX:MaxGCPauseMillis-XX:GCTimeRatio 等;
  4. 线程相关参数:如 -Xss-XX:ThreadStackSize
  5. JIT 编译相关参数:如 -XX:CompileThreshold-XX:+TieredCompilation
  6. 直接内存相关参数:如 -XX:MaxDirectMemorySize
  7. 其他常见参数:如 -D-XX:+HeapDumpOnOutOfMemoryError

合理配置这些参数可以优化 JVM 性能、减少垃圾回收带来的影响,并提高应用的稳定性和响应速度。

常用的 JVM 配置参数有哪些?的更多相关文章

  1. 常用的JVM配置参数

    一.Trace 跟踪参数 在Eclipse中,如何打开GC的监控日志 选择菜单栏Run -> Run Configurations -> Java Application -> 选择 ...

  2. 【java虚拟机】常用的jvm配置参数

    转自:https://www.cnblogs.com/pony1223/p/8661219.html 零.在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技 ...

  3. 十个最常用的JVM 配置参数

    1.-Xms:初始堆大小.只要启动,就占用的堆大小. 2.-Xmx:最大堆大小.java.lang.OutOfMemoryError:Java heap这个错误可以通过配置-Xms和-Xmx参数来设置 ...

  4. 常用JVM配置参数

    常用JVM配置参数 Trace跟踪参数 堆的分配参数 栈的分配参数 Trace跟踪参数 1.打开GC的日志,如果在程序的运行过程中,系统发生了GC,就会打印相关的信息. -verbose:gc -XX ...

  5. JVM虚拟机(1)---常用JVM配置参数

    常用JVM配置参数 常用JVM配置参数主要有:Trace跟踪参数.堆的分配参数.栈的分配参数. 一.Trace跟踪参数 跟踪参数用于跟踪监控JVM,对于开发人员来讲用于JVM调优以及故障排查的. 1. ...

  6. 一文学会JVM配置参数与工具使用

    经过前面的各种分析,我们知道了关于JVM很多的知识,比如版本信息,类加载,堆,方法区,垃圾回收等,但是总觉得心里不踏实,原因是没看到实际的一些东西. 所以这在本文,咱们就好好来聊一聊关于怎么将这些内容 ...

  7. JVM 配置参数 -D,-X,-XX 的区别

    转载请注明出处: 最近在安全护网行动,需要针对服务进行不断的安全加固,如 对服务的 log4j 的安全配置进行防护,对 fastjson 的漏洞进行安全加固等,最快的防护方法就是通过在服务启动的时候, ...

  8. JVM配置参数详解

    记录一下jvm中的一些配置参数,这些肯定不全的,希望你们能留个言,补全一下,谢谢啦! -XX: MaxDirectMemorySize--->设置直接内存,不设置与Java堆内存最大值一致 -X ...

  9. 有关JVM配置参数含义

    1.参数的含义-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M-vmargs 说明后面是VM的参数,所以后面的其实都是JV ...

  10. JVM配置参数详解(目前不够完善)

    最近看了有关虚拟机的书籍,发现有很多虚拟机配置参数不知道,特来记录一下, -XX: MaxDirectMemorySize--->设置直接内存,不设置与Java堆内存最大值一致 -XX:Perm ...

随机推荐

  1. 第4章 C#的高级特性

    第4章 C#的高级特性 4.1 委托 4.1.2 多播委托 对值为 null 的委托变量进行 + ​或 += ​操作,等价于为变量指定一个新值: SomeDelegate d = null; d += ...

  2. 免费的天气接口api(腾讯)

    请求URL: https://wis.qq.com/weather/common请求方式: GET参数: 参数名 必选 类型 说明 source 是 string pc weather_type 是 ...

  3. Prometheus修改数据存储位置

    Prometheus修改数据存储位置 Prometheus的数据存储位置可以通过配置文件中的 --storage.tsdb.path 参数来指定.默认情况下,数据存储在Prometheus安装目录下的 ...

  4. Kali 安装谷歌拼音

    Kali 安装谷歌拼音 1. 安装 Google 输入法 sudo apt install fcitx-googlepinyin 2. 重新启动系统 reboot 3. 打开开始菜单,搜索fcitx配 ...

  5. C# 如何解决文件写权限不可访问

    原文链接 实际业务中,我们可能会遇到我们的安装包将程序安装在C盘Program Files目录下后,有些文件要修改或者新增会导致拒绝访问的异常.但是我们又不想把数据放临时文件夹AppData中,那么如 ...

  6. IGM机器人维修的关键环节

    在现代科技领域,机器人已经成为不可或缺的一部分,它们广泛应用于各个行业,包括制造业.服务业.医疗.科研等.对于任何机器人来说,定期的维护和修理都是必不可少的.这不仅可以确保机器人正常工作,还可以延长其 ...

  7. window本地部署deepseek

    window本地部署deepseek 学习自[[教程]DeepSeek本地免费部署教程,丝滑不卡顿!带你解锁隐藏功能!]https://www.bilibili.com/video/BV1viFaeB ...

  8. MyBatisPlus - [07] Q&A

    题记部分 001 || Public Key Retrieval is not allowed 通常出现在使用JDBC连接数据库时,特别时在尝试通过SSL/TLS加密连接到MySQL或MariaDB数 ...

  9. Linux - 服务器磁盘 Raid & 分区 & 挂载

    一.流计算服务器 有一台流处理服务器(系统盘:2*600G.数据盘:6*600G)分区挂载如下: 设备名 分区 大小 挂载点 文件系统类型 磁盘用途 分区类别 /dev/sda /dev/sda1 3 ...

  10. 洛谷P11380 [GESP202412 八级] 排队 题解

    数据太可恶了,竟然有重边!!! 题目传送门. 显然一道简单图论题. 把 \(a_i\) 和 \(b_i\) 的关系想象成一条有向边,于是可以得出:如果 \(x\) 的出度大于 \(1\) 或者 \(x ...