当我们对虚拟机内存分配与回收有了一个理论基础之后,我们就要从实践的角度去了解虚拟机内存管理的;
一.jdk的命令行工具
1.1jps:虚拟机进程状态工具
jps命令行格式:
jps [option] [hostid]
具体使用:
各参数意义:
-q 只输出LVMID,省略主类的名称
-m 输出虚拟机进程启动时传递给主类main()的参数
-l 输出主类的全名,如果进程执行的是jar包,输出jar包路径
-v 输出虚拟机进程启动时jvm参数
创建并执行项目:
查看:
1.2jstat:虚拟机统计信息监控工具
jstat命令格式:
jstat [ option vmid [ interval [ s | ms ] [count]] ]
说明一下参数interval 和count分别代表查询间隔和查询次数,如果没有设置,那就只查询一次;
实例:
个参数意义:
-class 监视类装载/卸载数量/总空间以及类装载锁耗费的时间
-gc 监视java堆状况,包括Eden区/survivor区/老年代/永久代等容量/已用空间/gc时间合计等信息
-gccapacity 监视内容与-gc基本相同,但输出主要关注java堆各个区域使用到的最大,最小空间;
-gcutil 监视内容与-gc一样,但是输出主要关注已使用空间占总空间的百分比
-gccauser 与-gcutil功能一样,但是会额外输出导致上一次gc产生的原因
-gcnew 监控新生代gc状况
-gcnewcapacity 监控内容与-gcnew一样,输出主要关注使用到的最大/最小空间
-gcold 监控年老代gc状况
-gcoldcapacity 监控内容与-gcold一样,输出关注使用到的最大/最小空间
-gcpermcapacity 输出永久代使用到的最大/最小空间
-compiler 输出jit编译器编译过的方法/耗时等信息
-printcompilation 输出已经被jit编译的方法
1.3jinfo:java配置信息工具
命令格式;
jinfo [ option ] pid
自行看help
1.4jmap:java内存映像工具
jmp(Memory map for java) 命令用于生产堆转储快照(dump文件).
命令格式:
jmap [ option ] vmid
自行看help
1.5jhat:虚拟机堆转储快照分析工具
命令格式:
jhat [dump文件的路径]
1.6jstack:java 堆栈跟踪工具:
二.jdk的可视化工具
2.1JConsole:java监视与管理控制台
想使用了解的请查看我另外一篇博客:
JVM虚拟机深入理解---Jconsole在jvm分析的使用
2.2VisualVM:多合一故障处理工具
该工具需要下载安装:
链接:https://visualvm.github.io/
使用方式和JConsole差不多;
其功能比JConsole更加强大,里面可以添加插件;具体使用方式请看官方文档;基本上工作上使用JConsole就差不多了.