页面树结构
转至元数据结尾
转至元数据起始



堆信息的作用及应用场景

     主要用于跟踪服务器出现内存泄漏的情况(如客户现场系统占用内存异常的大并且GC之后不释放),也可以跟踪当服务器出现死锁时,死锁线程的局部参数,可以更有效率的定位。

如何打印堆信息


通过命令行打印

    1)通过jps或netstat获取Java进程号:

    2)在JDK的bin目录运行生成整个堆Dump文件【jmap -dump:live,format=b,file=进程号.bin 进程号】
    

通过jvisualvm打印

    

通过was命令行打印


    1)、启动wsadmin.bat ,路径为:D:\IBM\WebSphere\AppServer\profiles\AppSrv01\bin
      输入命令行: cd D:\IBM\WebSphere\AppServer\profiles\AppSrv01\bin
                  ./wsadmin.bat

    2)、输入命令  wsadmin>set objectName [$AdminControl queryNames WebSphere:type=JVM,process=<server1>,*]
     说明:上面中的<server1>要换成现场was服务的真实名称
     比如在服务器上对应的服务名是server1 ,命令行输入是:set objectName [$AdminControl queryNames WebSphere:type=JVM,process=server1,*]

    3)、输入命令  wsadmin> $AdminControl invoke $objectName generateHeapDump
     
    4)、安装目录D:\IBM\WebSphere\AppServer\profiles\AppSrv01下生成HeapDump文件(例 : heapdump.20170719.141911.10952.0003.phd)
     
    5)、将获取都到的heapdump文件发回分析即可。

     6)、was如何分析heapdump文件?
     用heapdump文件分析器对heapdump文件进行分析
     cd /d heapdump文件分析器放置路径>java -Xmx1000m -jar ha33.jar

怎么分析堆信息

  1. 在JDK的Bin目录下打开jvisualvm.exe
  2. Jvisualvm装入hprof文件
  3. 生成线程文件

      这一步后面需要看线程信息时再生成也成,这里生成的线程和命令行生成的线程是有些区别的,它还含有一些局部变量的信息。

      

      4.  查询使用最多的smartbi类

    
    点击数量极大的类,这里是smartbi.freequery.querydata.CellData
    
   展开其中多个
   看是否同一个对象持有(如示例发现)
   
     
   向下找到对应的对象

    点击查看具体的值
     
    然后打开该报表验证设置的问题

  • 无标签