Java自带程序分析神器jvisualvm

在做一个项目的时候发现内存在持续增长,cpu高速运转,想了老半天,也不知道是啥情况。

于是我决定,我要走进JVM内部,查看每个程序的内存、CPU、线程情况!

直到我看到了这样一篇文章

https://blog.csdn.net/gavin_john/article/details/52458542

在里面我注意到了一个Java自带的分析器jvisualvm

真的好用!使用起来超级方便,只需要在IDEA自带的Terminal输入jvisualvm就可以了!

打开以后界面是这样的:

左边是所有在JVM上跑着的Java程序,连pid也写出来了,你可以双击选择你要分析的Java进程。

内存分析

比如,我们选择IntelliJ来分析,双击后是这样的:

程序很容易使用,你去探索15分钟应该就上手了。

在这里可以查看所有线程,我提个建议,以后你在定义自己线程的时候给线程起一个名字,否则系统会用Thread-1、Thread-2以此类推来给创建的线程起名字。

然后在监视页面,可以查看很多参数,我重点要说的是这个堆Dump!点击这个按钮后,会生成一个此时的快照,所有的对象,你可以查看其内容、引用等。

点击堆Dump后进入这个页面:

我们进入类的选项卡:

内存占用高的时候,可以在这里查看内存占用比例,哦对了,所有你自己定义的类都可以在这里找到。

比如我们现在要看看都有哪些字符串,你可以去找String类,因为String的内容都在char[]里保存着对吧,所以我们直接双击char[]这个类,进到这个界面来:


你看到了吗,每一个char[]都可以看到内容。

下面有一个引用标签,这里面你可以看到它都在被谁引用。this是自己,所以我们重点要看的是下面的红点点。

行了,自己探索吧。

CPU线程分析

一种是点那个线程标签

另一种是打开抽样器

然后点那个CPU,这里会列出所有的线程,以及他们占用CPU的比例和情况。

行了,啥也不多说了, 自己探索吧!

反正我当时是直接看到了自己占用CPU过高的线程,然后打开对应线程的类,去分析发现了自己的问题。

毕竟!它连方法名都告诉你了啊!

线程名:

真是要啥有啥,舒服吧?

觉得有帮助的话,评论区说句话吧!欢迎转载,请指明出处。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值