jvisualvm监控本地与远程java进程
随时随地监控
在程序运行期间我们可能想随时随地查看程序运行状态、线程活动情况、堆栈的使用状况,那我们总不能每隔几秒就使用命令行然后生成一个 dump 文件查看吧,有没有什么工具能够动态的查看这些,而且支持转储等功能呢?这就需要使用一种可视化的工具进行查看,幸运的是在 java 的安装目录下就自带了这个工具,在 JAVA_HOME\bin
目录下有个工具jvisualvm.exe
,双击打开即可
打开之后会自动列出当前的 java 进程,由于这个工具本身也是一个 java 进程,我们双加打开它进行监控
可以看到,当前java进程启动时设置的参数全部列了出来,已经进程的 pid 号,java 的版本,虚拟机的编译模式,这里是 mixed 混合模式,表示运行多少将 java代码转换为本地代码是由虚拟机决定的等等一系列信息。那该如何监视呢?点击监视,就可以看见一堆信息
这些信息随着时间动态的变化,说明 jvisualvm 正在监视,你通过勾选选择监控哪些,你可以手动执行垃圾回收,还可以将堆进行 dump 下来分析。点击线程进行线程的监控,这里你可以选择监听哪些线程,必要的时候也可以将线程 dump下来进行分析
抽样器的功能就是对 CPU或者内存进行抽样查看
通过点击对应的按钮选择对谁进行抽样查看,这里选择内存
它就会动态的监视内存的使用情况,占用的字节数,类的实例数等等,再进行分析也是很容易的
监控远程程序
这里大家参考网上众多写法,也可以参考官网教程,tomcat选取的话不能选取版本太新的,我在试的时候提示端口号设置那条命令无法识别,我不清楚是版本问题还是什么,所以使用的话还是选取有把我的版本。