JVM相关参数

2024/2/8 jvm

随便整理的一些JVM相关

# 远程debug参数:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 
1

# 指定虚拟机堆内存大小:

-Xmx20m Java Heap最大值,默认值为物理内存的1/4
-Xms20m Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值
-Xmn20m Java Heap 新生代大小
1
2
3

# 指定虚拟机栈内存大小:

-Xss20m 每个线程的Stack大小,不熟悉最好保留默认值
1

# 常见的GC日志分析工具

  • GCViewer
  • GCEasy
  • GCLogViewer
  • GCHisto
  • Hpjmeter
参数及其默认值 描述
-XX:LargePageSizeInBytes=4m 设置用于Java堆的大页面尺寸
-XX:MaxHeapFreeRatio=70 GC后java堆中空闲量占的最大比例
-XX:MaxNewSize=size 新生成对象能占用内存的最大值
-XX:MaxPermSize=64m 老年代对象能占用内存的最大值
-XX:MinHeapFreeRatio=40 GC后java堆中空闲量占的最小比例
-XX:NewRatio=2 新生代内存容量与老生代内存容量的比例
-XX:NewSize=2.125m 新生代对象生成时占用内存的默认值
-XX:ReservedCodeCacheSize=32m 保留代码占用的内存容量
-XX:ThreadStackSize=512 设置线程栈大小,若为0则使用系统默认值
-XX:+UseLargePages 使用大页面内存
-XX:+PrintCommandLineFlags 查看命令行相关参数(包含使用的垃圾收集器)
jinfo -flag 相关垃圾回收器参数 进程ID 查看默认的垃圾收集器
-XX:+UseSerialGC 指定年轻代和老年代都使用串行收集器
-XX:ParallelGCThreads 限制线程数量,默认开启和cpu数据相同的线程数,cpu大于8时,其值等于 3+[5*CPU_COUNT]/8
-XX:+UseParallelGC 手动指定年轻代使用Parallel并行收集器执行内存回收任务(默认开启年轻代使用ParallelOld GC)
-XX:+UseParallelOldGC 手动指定老年代使用并行回收收集器(默认开启年轻代使用Parallel GC)
-XX:MaxGCPauseMillis 设置垃圾收集器最大的停顿时间(即STW时间)单位为毫秒(慎用),默认200ms
-XX:GCTimeRatio 垃圾收集时间占总时间的比例(1/(N+1)),用于衡量吞吐量的大小
-XX:+UseAdaptiveSizePolicy 设置Parallel Scavenge收集器具有自适应调节机制(各代比例,晋升老年代年龄会自动调整)
-XX:+UseConcMarkSweepGC 老年代使用CMS 收集器,年轻代使用parNew 收集器
-XX:CMSlnitiatingOccupanyFraction 设置堆内存使用率的阈值,一旦达到该阈值,便开始进行回收。
-XX:+UseCMSCompactAtFullCollection 指定执行完Full GC后对内存空间进行压缩整理,避免内存碎片的产生
-XX:CMSFullGCsBeforeCompaction 设置执行多少次Full GC后进行内存压缩整理
-XX:ParallelCMSThreads 设置CMS线程数量(默认启动(ParallelCMSThreads+3)/4)
-XX:G1HeapRegionSize 设置每个Region的大小。值是2的幂,范围是1MB
-XX:InitiatingHeapOccupancyPercent 设置触发并发GC周期的Java堆占用率阈值。超过就触发GC,默认45
-Xloggc:/path/to/gc.log 把gc日志放到指定目录
最近更新: 2024/9/12 10:54:22