jdk自带了许多对jvm进行监控的程序,例如JVisualVM、jstack等等。
现在进行一些简单的对jvm的监控。
我们可以使用JVisualVM来对堆区进行图形化监控。
我们可以在命令行输入jvisualvm,然后就进入了jvisualvm的图形化界面。
然后我们随便执行一个主方法。
就可以在jvisualvm里面查看堆区内存或者其他区域的内存。
Arthus的简单使用
首先我们先使用dashboard
当前系统的实时数据面板,按 ctrl+c 退出。
会显示出当前运行的程序,输入进程号就可以详细查看。
cpu标高的情况
这种情况的话很不正常。
所以我们可以使用thread指令。
thread 进程id号
显示指定线程的运行堆栈
这样我们就可以在堆栈中发现一直运行的栈帧的行数,就可以找到问题所在处。
死锁的情况
我们都知道一般死锁就是两个线程互相拥有对方的锁,而导致双方都进入阻塞。所以我们可以使用Arthus来查找阻塞的线程。
使用thread -b
找出当前阻塞其他线程的线程。
直接在服务器中查询.java文件
我们服务器运行程序时发现了问题想要查询是不是代码问题,就可以使用jad指令。
反编译指定已加载类的源码。