zoukankan      html  css  js  c++  java
  • Java自带的性能监测工具之jhat

    原文:https://my.oschina.net/wangmengjun/blog/864838


    本文继续介绍Java自带的性能监测工具,本文使用jhat (Java Heap Analyse Tool)工具来玩~

    jhat (Java Heap Analyse Tool) 是用来分析java堆的命令,可可以将对中的对象以html的形式展示,包括对象的数量、大小等信息,并支持对象查询语言 (OQL)。


    先使用jps -l查看有哪些进程~


    [root@dev03 ~]# jps -l

    10838 sun.tools.jps.Jps
    13823 org.apache.hadoop.hdfs.server.namenode.NameNode
    13588 org.apache.hadoop.yarn.server.nodemanager.NodeManager
    21983 org.apache.catalina.startup.Bootstrap
    13941 org.apache.hadoop.hdfs.server.datanode.DataNode
    13318 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
    14097 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode


    手动为PID为21983的进程生成堆快照文件~

    [root@dev03 ~]# jmap -dump:format=b,file=/srv/heap.hprof 21983
    Dumping heap to /srv/heap.hprof ...
    Heap dump file created

    然后,使用jhat打开生成的heap.hprof文件~ 如,


    [root@dev03 ~]# jhat /srv/heap.hprof
    Reading from /srv/heap.hprof...
    Dump file created Wed Mar 22 10:41:26 CST 2017
    Snapshot read, resolving...
    Resolving 526703 objects...
    Chasing references, expect 105 dots.........................................................................................................
    Eliminating duplicate references.........................................................................................................
    Snapshot resolved.
    Started HTTP server on port 7000
    Server is ready.


    jhat在分析完成后,使用HTTP服务器展示其分析结果。访问地址为http://<IP>:7000,可以看到类似如下的内容:

    将页面拖到最下面,“Other Queries”一栏~

    在“Other Queries”一栏中点击不同的链接可以展示不同的内容,如

    点击“Show heap histogram” 链接,展示堆快照直方图~

    点击“Execute Object Query Language (OQL) query”链接,可以使用OQL查询~

    OQL查询语法与Visual VM的OQL类似~ 基本语法如下:

     select <JavaScript expression to select>
             [ from [instanceof] <class name> <identifier>
             [ where <JavaScript boolean expression to filter> ] ]

    可以点击此连接(oqlhelp.html)获取Visual VM OQL更多信息~

    如,”获取所有ClassLoader类的名字“的OQL查询如下:

    select classof(cl).name from instanceof java.lang.ClassLoader cl

    查询结果如下:

  • 相关阅读:
    C调用C++的动态库
    记“gorm查询没报错,但结果为空”的解决
    Android学习之路(一) Android Studio创建项目
    Windows程序消息机制浅析
    2021.5.1 学习小目标
    微信测试流程
    mysql使用正则表达式匹配中文所遇到的问题
    关于mysql的distinct用法
    一次性能测试的网络层面总结
    mongodb中直接根据某个字段更新另外一个字段值
  • 原文地址:https://www.cnblogs.com/shihaiming/p/12872480.html
Copyright © 2011-2022 走看看