1 基本参数
1.1 内存调整
堆
- -Xms10m 初始化堆大小
- -Xmx10m 堆的最大大小
- -XX:NewRatio=N 老年代与新生代比例默认2,老年代:新生代 2:1
新生代
- -XX:NewSize=N 设置新生代初始大小。
- -XX:MaxNewSize=N 设置新生代最大大小。
- -Xmn10m 设置新生代的初始值最大值
- -XX:SurvivorRatio 设置新生中 eden区 与 2 个survivor区比例。
- 默认8 eden比例 = 8 / (8 + 2)
元空间/永久代
- -XX:MetaspaceSize=N 设置元空间初始大小
- -XX:MaxMetaspaceSize=N 设置云空间最大大小
- -XX:PermSize=N 设置永久代的大小
- -XX:MaxPermSize 设置永久代的大小
栈
- -Xss1M 单个线程栈的大小
直接内存
- -XX:MaxDirectMemorySize
- 默认与 -Xmx 相同。
方法区
- -verbose:class 跟踪类加载和卸载
- -XX:+TraceClassLoading 跟踪类加载
- -XX:+TraceClassUnloading 跟踪类卸载
常量池
- -XX:StringTableSize=99991
- image.png
1.2 日志信息
- -verbose:gc 开启基本的GC日志功能
- -Xloggc:<path > 将GC日志记录到某个文件
- -XX:+PrintGC 开启GC的基本日志
- -XX:+PrintGCDetails 开启GC的详细日志
- -XX:+PrintGCTimeStamps 为GC日志中的每个条目打印相对时间戳
- -XX:+PrintGCDateStamps 为GC日志中的每个条目打印日期时间戳 开销比上面命令大
- -XX:+PrintTLAB 在垃圾收集日志中输出TLAB相关的概略信息
1.3 内存管理
- -XX:+HeapDumpOnOutOfMemoryError JVM抛出一个内存异常就自动生成一个堆转储
- -XX:HeapDumpPath=<path > 设置自动堆转储保存的文件名路径
- -XX:TLABSize=N 设置TLAB的大小
- -XX:-ResizeTLAB 关闭TLAB的大小调整功能
- -XX:+UseCompressedOops 为对象引用模拟35位长的指针,32G默认开启 压缩指针8默认开启
- -XX:SoftRefLRUPolicyMSPerMB=N 控制使用多长时间后软引用对象可以被回收
2 垃圾收集器相关
2.1 垃圾收集器组合使用参数
- -XX:+UseParallelOldGC Parallel Scavenge + Parallel Old组合
- -XX:+UseConcMarkSweepGC ParNew+CMS+Serial Old 组合
- -XX:+UseG1GC g1收集器
2.2 垃圾收集器共用
- -XX:-XX:ConcGCThreads=N 设置垃圾收集器使用的线程数
- -XX:+UseAdaptiveSizePolicy JVM会依据设定的GC目标调整堆的大小
2.3 cms
- -XX:CMSInitiatingOccupancyFraction=68 CMS 会在老年代空间占用达到 68% 时启动并发收集周期
- 默认68 可以适当降低这个值
2.4 Parallel Scavenge
- -XX:MaxGCPauseMillis=N 最长停顿时间 单位毫秒,堆的大小会依据该目标动态调整
- -XX:GCTimeRatio=N 公式 1/(1+N),用于控制Throughput收集器在垃圾收集上花费时间比例,堆的大小会依据该目标动态调整
网友评论