目录
JVM参数及分析工具
JVM参数
标准参数
-version -help -server -cp
-X参数
非标准参数,在JDK各个版本中可能会变动
-Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定
-XX参数
使用最多的参数类型,非标准化参数,主要用于JVM调优
1.Boolean类型
格式:-XX:[+-]<name> +或-表示启用或者禁用name属性
例子:-XX:UseConcMarkSweepGC 表示启用CMS类型的垃圾回收器 ,-XX:+UseG1GC 表示启用G1类型的垃圾回收器
2.非Boolean类型
格式: -XX<name>=<value> 表示name属性的值是value
例子:-XX:MaxGCPauseMillis=500 表示最大停顿时间
查看参数
java -XX:+PrintFlagsFinal -version > flags.txt
注意:“=”表示默认 “:=”表示被用户或JVM修改后的值
设置参数的方式
- 开发工具中设置,比如IDEA, eclipse
- 运行jar包的时候:java -XX:+UseG1GC xxx.jar
- web容器比如Tomcat,可以再脚本中进行设置
- 通过jinfo实时调整某个java进程的参数(仅被标记为manageable的flags可以被实时修改)
常用参数含义
常用命令
jps 查看java进程
jinfo
(1)实时查看和调整JVM配置参数
(2)查看 jinfo -flag name PID 查看某个java经常的name属性值
jstat
(1)查看虚拟机性能的统计信息
(2)查看类装载信息 jstat -class PID 1000 10次 ->查看某个java进程的类装载信息,每1000毫秒输出一次,共输出10
(3)查看垃圾收集信息 jstat -gc PID 1000 10
jstack
(1)查看线程堆栈信息
(2)用法: jstack PID
(3)排查死锁
jmap
(1)生成堆转储快照
(2)打印出堆内存相关信息
常用工具
jconsole
jvisualvm
可监控本地和远端
Arthas
MAT
GC日志分析工具
拿到GC日志文件
在线的有 gceasy GCViewer