美文网首页
java虚拟机内存监控

java虚拟机内存监控

作者: Jonclex | 来源:发表于2019-07-10 16:37 被阅读0次

    VisualVM的使用
    VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。在JDK_HOME/bin目录下面,有一个jvisualvm.exe文件。
    双击启动 jvisualvm.exe,启动起来后和jconsole 一样同样可以选择本地和远程,如果需要监控远程同样需要配置相关参数。

    image.png
    VisualVM可以根据需要安装不同的插件,每个插件的关注点都不同,有的主要监控GC,有的主要监控内存,有的监控线程等。
    image.png
    如何安装:
    1、通过https://visualvm.github.io/pluginscenters.html地址下载需要的插件。
    2、从主菜单中选择“工具”>“插件”。
    3、在“已下载”标签中,点击【添加插件】,选择下载的插件。单击“安装”。
    4、逐步完成插件安装程序。
    介绍三个主要使用几个:监控、线程、Visual GC
    监控插件:能看到cpu、内存、类、线程变化的图表
    image.png
    线程插件:
    image.png
    Visual GC插件 是常常使用的一个功能,可以明显的看到年轻代、老年代的内存变化,以及gc频率、gc的时间等。
    image.png
    使用JVisualVM分析内存泄漏:
    1)查看监控插件中堆的使用,如果系统有操作完成,但是堆内存一直很大说明有内存泄露。
    image.png
    2)Visual GC标签中查看老年代内存变化,如果老年代一直在gc,但是老年代内存没有减少,可能是有内存泄露。如下图所示
    image.png

    Jmap命令使用
    Jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量,占用内存大小)。
    使用方法 jmap -histo pid|more。
    可以通过此命令查看哪些对象占用内存比较大,也可以看到哪些对象太大导致内存泄露。

    相关文章

      网友评论

          本文标题:java虚拟机内存监控

          本文链接:https://www.haomeiwen.com/subject/njnhkctx.html