一、JVM参数类型
参考
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/
https://mp.weixin.qq.com/s/GsxeFM7QWuR–Kbpb7At2w
1.1 标准参数
一些基本的参数,这些参数在大多其他命令行工具中也会用到
-help
-server -client
-version -showversion
-cp -classpath
1.2 X参数
非标准化参数
-Xinit: 解释执行
-Xcomp: 第一次使用就编译成本地代码
-Xmixed: 混合模式,JVM自己来决定是否编译成本地代码
1.3 XX参数(常用)
非标准化参数
相对不稳定
主要用于JVM调优和Debug
- Boolean类型
格式:-XX:[+ -] < name > 表示启用或者禁用name属性
eg:-XX:+UseConcMarkSweepGC 启用cms垃圾收集器
-XX:+UseG1GC 启用g1垃圾收集器 - 非Boolean类型
格式:-XX:< name > = < value >表示name属性的值是value
note
-Xms等价于-XX:InitialHeapSize
-Xmx等价于-XX:MaxHeapSize
二、查看JVM运行时参数的值
-XX:+PrintFlagsInitial
查看初始值
-XX:+PrintFlagsFinal
查看最终值
jps -l #可以查看java进程的详细类名
jinfo -flag <name> pid
查看指定java进程的某个参数值
三、jstat查看JVM统计信息
类装载
jstat -class pid <间隔时间> <执行次数>
垃圾回收器
jstat [-gc,-gcutil,-gccause,-gcnew,-gcold] pid <间隔时间> <执行次数>
JIT编译
jstat [-compiler] pid <间隔时间> <执行次数>
四、导出内存映像文件
jmap
jmap -dump.format=b file=文件存放地址 pid
jmap -heap pid
可以查看当前每个区块占多大内存