随便整理的一些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
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日志放到指定目录 |