虚拟机工具
在我们安装JDK之后,安装目录的bin目录下有很多命令,可以利用这些命令查看程序状态
官方命令介绍: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/
jps(java process status)
查看本地虚拟机唯一id
-l :启动类全名
-m :运行时主类接收的参数
-v :接收的VM参数
jstat:查看内存使用(类似于linux top)
jstat -gcutil
#1000ms 输出5次 vmid(虚拟机id) = 6
jstat -gc 6 1000 5
元空间:
本质和永久代类似。都是对方法区的实现。区别在与元空间不在虚拟机中,而是使用本地内存,所以默认情况下元空间大小受限于本地内存大小。
jinfo:实时查看和设置虚拟机各项参数(设置用+-,查看直接flag名称)
jinfo -flag
jmap:查看堆栈快照,可以保存到文件
jmap -dump:format=b,file=d:\dump.bin PID
jhat(JVM heap analysis tool)
jstack:查看线程快照
程序中也可以获得:
Thread.getAllStackTrace();返回一个map。key为Thread,value为StackTraceElement数组。
jconsole:
内存监控(jstat):开启被监控程序,打开jconsole,选择你要查看的参数
线程监控(jstack):
死锁检测:
什么是死锁:
两个线程,想个临界资源,使用资源时排队等待资源。
VisualVM: 一个集成的检测工具
eclipse:https://www.cnblogs.com/xifengxiaoma/p/9402497.html
IDEA:https://www.cnblogs.com/avivaye/p/10515259.html
JProfiler:
https://www.cnblogs.com/linwenbin/p/11439150.html
https://blog.csdn.net/wytocsdn/article/details/79258247
如果是JDK8.0之后,建议使用JMC
在jdk安装目录的bin目录下,具体使用方法,请查看大佬文章