常用的 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 性能、减少垃圾回收带来的影响,并提高应用的稳定性和响应速度。
常用的 JVM 配置参数有哪些?的更多相关文章
- 常用的JVM配置参数
一.Trace 跟踪参数 在Eclipse中,如何打开GC的监控日志 选择菜单栏Run -> Run Configurations -> Java Application -> 选择 ...
- 【java虚拟机】常用的jvm配置参数
转自:https://www.cnblogs.com/pony1223/p/8661219.html 零.在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技 ...
- 十个最常用的JVM 配置参数
1.-Xms:初始堆大小.只要启动,就占用的堆大小. 2.-Xmx:最大堆大小.java.lang.OutOfMemoryError:Java heap这个错误可以通过配置-Xms和-Xmx参数来设置 ...
- 常用JVM配置参数
常用JVM配置参数 Trace跟踪参数 堆的分配参数 栈的分配参数 Trace跟踪参数 1.打开GC的日志,如果在程序的运行过程中,系统发生了GC,就会打印相关的信息. -verbose:gc -XX ...
- JVM虚拟机(1)---常用JVM配置参数
常用JVM配置参数 常用JVM配置参数主要有:Trace跟踪参数.堆的分配参数.栈的分配参数. 一.Trace跟踪参数 跟踪参数用于跟踪监控JVM,对于开发人员来讲用于JVM调优以及故障排查的. 1. ...
- 一文学会JVM配置参数与工具使用
经过前面的各种分析,我们知道了关于JVM很多的知识,比如版本信息,类加载,堆,方法区,垃圾回收等,但是总觉得心里不踏实,原因是没看到实际的一些东西. 所以这在本文,咱们就好好来聊一聊关于怎么将这些内容 ...
- JVM 配置参数 -D,-X,-XX 的区别
转载请注明出处: 最近在安全护网行动,需要针对服务进行不断的安全加固,如 对服务的 log4j 的安全配置进行防护,对 fastjson 的漏洞进行安全加固等,最快的防护方法就是通过在服务启动的时候, ...
- JVM配置参数详解
记录一下jvm中的一些配置参数,这些肯定不全的,希望你们能留个言,补全一下,谢谢啦! -XX: MaxDirectMemorySize--->设置直接内存,不设置与Java堆内存最大值一致 -X ...
- 有关JVM配置参数含义
1.参数的含义-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M-vmargs 说明后面是VM的参数,所以后面的其实都是JV ...
- JVM配置参数详解(目前不够完善)
最近看了有关虚拟机的书籍,发现有很多虚拟机配置参数不知道,特来记录一下, -XX: MaxDirectMemorySize--->设置直接内存,不设置与Java堆内存最大值一致 -XX:Perm ...
随机推荐
- 本地部署最强人工智能服务:方案(一)Chatbox+硅基流动(满血DeepSeek R1)
最近DeepSeek的服务器经常出现服务器繁忙,而且本地运行大模型很吃力,我的960m挺吃力的.不过华为后续和硅基流动一起搭建起了DeepSeek的API服务,注册就送14块钱,换算下来 4块/M t ...
- linux shell 脚本调试技巧
本文分享自天翼云开发者社区<linux shell 脚本调试技巧>,作者:g****n 1.bash -x 加脚本 这是最常用的调试手段,终端会打印出,脚本执行过程中的每一个命令. a. ...
- Linux docker 的安装及使用
Docker 有两个版本: 社区版(Community Edition,缩写为 CE) 企业版(Enterprise Edition,缩写为 EE) 检查环境 # 系统内核需要 3.10 以上 una ...
- Q:批处理备份临时文件
批处理:将本月临时文件移动到历史目录中 chcp 936 @echo off set month=%date:~2,2%%date:~5,2% set year=%date:~0,4% echo %y ...
- OSAL架构
OSAL操作系统最多可以支持16个任务,由任务功耗管理PwrMgr_task_state变量可知,而OSAL每个任务最多只能支持16个事件处理,理论上最大可以执行256个事件处理. 对于一些运算能力不 ...
- JUC并发—13.Future模式和异步编程简介
大纲 1.Runnable接口与Callable接口 (1)Runnable接口实现异步任务 (2)Callable接口实现异步任务 2.Future模式 (1)Future模式的概念 (2)Futu ...
- Sqoop1的导入导出
Sqoop1 和 Sqoop2 的区别 # 版本上 Sqoop1: 1.4.x Sqoop2: 1.99.x # 架构上 Sqoop1 使用 Sqoop客户端直接提交的方式(命令.将命令封装在脚本中) ...
- 深度科普 - 大名鼎鼎的bun.js到底是什么? 它能否替代node.js? 是否能成为前端生态的未来?
什么是bun? 聪明的小伙伴们,你们在接触bun时是否有过这样的疑问呢? bun.js是什么? 它是如何诞生的? 跟node.js的区别是什么? 有什么优势? 目前的发展情况如何了? 他是否是前端的未 ...
- 大数据之路Week08_day06 (Zookeeper搭建)
Zookeeper集群搭建 在本文中Zookeeper节点个数(奇数)为3个.Zookeeper默认对外提供服务的端口号2181 .Zookeeper集群内部3个节点之间通信默认使用2888:3888 ...
- centos 8 编译*.cpp文件
1.安装g++ yum -y install gcc-c++ 2.编译*.cpp文件 g++ -o test_app_name test_source_file.cpp 3.运行编译结果 ./test ...