java内存分析工具

一、jmap

    1、查看java堆使用情况

          jmap -heap pid

    2、查看堆中对象数量、大小

          jmap -histo pid>D:/a.log

class name 解读
B代表byte 
C代表char 
D代表double 
F代表float 
I代表int 
J代表long 
Z代表boolean 
前边有[代表数组,[I 就相当于int[] 

对象用[L+类名表示  

    3、将内存使用情况输出到文件

    jmap -dump:live,file=D:/dump.bin,format=b 7340

    --live 代表还在生命周期内

 

二、jhat

     1、查看堆文件

          jhat -port 5000 D:/dump.bin

         有时你dump出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数:

         jhat -J-Xmx512m <heap dump file>
三、使用jvisualvm
       
  1. grant codebase "file:${java.home}/../lib/tools.jar" {  
  2.    permission java.security.AllPermission;  
  3. };  
新建文件,命名为:java.policy
再在被需要监控的主机上运行:
  1. jstatd -J-Djava.security.policy=d:/java.policy -J-Djava.rmi.server.logCalls=true  

     3.1 使用cmd命令:jvisualvm --console suppress 可开启独立窗口

四、jstat

    4.1 jstat -gcutil [pid] [internal]  很实用,internal 是时间单位毫秒,每隔所烧秒钟输出一次jvm实例为pid的gc信息
S0: Survivor space 0 区已使用空间的百分比
S1: Survivor space 1 区已使用空间的百分比
E: Eden space 区已使用空间的百分比
O: Old space 区已使用空间的百分比
P: Perm space 区已使用空间的百分比
YGC: Young GC 的次数
YGCT: Young GC 所用的时间 单位秒
FGC: Full GC 的次数
FGCT: Full GC 所用的时间 单位秒
GCT: 用于垃圾回收的总时间 单位秒 

你可能感兴趣的:(java内存)