常用JVM参数
-XX:+PrintCommandLineFlags 打印那些已经被用户或者JVM设置过的详细的xx参数的名称和值。
-XX:+PrintFlagsInitial 打印所有JVM参数启动的初始值
-XX:+PrintFlagsFinal 打印所有JVM参数的最终值
-Xms6144m -Xmx6144m JVM初始分配的内存由-Xms 指定,默认是物理内存的1/64;JVM最 大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时, JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后JVM调整堆的大小。
-Xss256k 每个线程的Stack大小
-XX:MetaspaceSize=256m 元空间初始化内存大小
-XX:MaxMetaspaceSize=256m 元空间最大内存值
–XX:NewRatio=1老年代与新生代的比例,默认2。或者使用-XX:NewSize=2048m -XX:MaxNewSize=2048m
-XX:SurvivorRatio=8 新生代Eden区和from区的比例,默认8
-XX:ErrorFile=/export/Logs/server1/java_error_%p.log 设置JVM异常时日志输出路径
-XX:+HeapDumpOnOutOfMemoryError 发生OOM(OutOfMemoryError)时将堆信息dump
-XX:HeapDumpPath=d://a.dump指定dump文件的保存路径
-Xloggc:/export/Logs/server1/gc.log 设置GC日志文件输出路径
-XX:+PrintGCDetails 打印详细GC日志
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+UseGCLogFileRotation 开启GC日志文件分割
-XX:+PrintTenuringDistribution 在每次新生代GC时,打印出幸存区中对象的年龄分布。
-XX:NumberOfGCLogFiles=14 GC日志最多分割几个文件,超过之后从头文件开始写
-XX:GCLogFileSize=100M 每个GC日志文件上限大小,超过就触发分割
-Djava.awt.headless=true java做图形处理需要加
-Dsun.net.client.defaultConnectTimeout=60000 建立与主机连接超时时间
-Dsun.net.client.defaultReadTimeout=60000 调用http请求超过60000ms未响应,会抛出异常信息ReadTimeout
-Djmagick.systemclassloader=no jmagick在tomcat运行时需设置
-Dnetworkaddress.cache.ttl=300 设置解析成功的域名记录JVM中缓存的有效时间
-Dsun.net.inetaddr.ttl=300 未读取到Dnetworkaddress.cache.ttl,则会读取当前参数作为缓存 ttl.设置解析成功的域名记录JVM中缓存的有效时间
-XX:+DisableExplicitGC 禁止代码中显示调用GC,代码中调用System.gc()没有任何效果
-XX:+UseConcMarkSweepGC 并发标记清除(CMS)收集器,CMS收集器也被称为短暂停顿并发收集器;
-XX:+UseParNewGC 新生代采用parallel并行收集器
-XX:+CMSParallelRemarkEnabled 降低标记停顿
-XX:+UseCMSCompactAtFullCollection 使用并发收集器时,开启对年老代的压缩.
-XX:CMSFullGCsBeforeCompaction=0 设置经过多少次不压缩的FGC进行一次内存压缩
-XX:+CMSClassUnloadingEnabled 年老代启用CMS,但默认是不会回收永久代(Perm)的。此处对Perm区启用类回收,防止Perm区内存满。
-XX:LargePageSizeInBytes=128M 指定Java heap的分页页面大小
-XX:+UseFastAccessorMethods 原始类型的快速优化
-XX:+UseCMSInitiatingOccupancyOnly 使用手动定义的初始化定义开始CMS收集
-XX:CMSInitiatingOccupancyFraction=70 使用cms作为垃圾回收使用70%后开始CMS收集;
-XX:SoftRefLRUPolicyMSPerMB=0 每1M空闲空间可保持的SoftReference对象的生存时长(单位是ms毫秒),默认是1000ms,如果被设置为0,就会导致软引用对象马上被回收掉
上面是CMS垃圾回收器,下面是G1垃圾回收器。
-XX:MaxGCPauseMillis=200 每次GC最大的停顿毫秒数
-XX:+UseG1GC
-XX:+ParallelRefProcEnabled 并行引用处理开启,Final Remark阶段使用多线程,开启后会使用ParallelGCThreads数量的线程处理。
-XX:ParallelGCThreads=4 并行GC线程数
-XX:G1NewSizePercent=20 新生代大小占堆的百分比
-XX:+UnlockExperimentalVMOptions 允许使用实验性参数
-XX:InitiatingHeapOccupancyPercent=30 堆使用超过多少百分比,进行gc
-XX:+PrintReferenceGC 打印各种引用对象的详细回收时间
-XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构