jstack——发现线程目前停留在那行代码 



jstack <PID>
jstack -F <PID> # 有时候线程挂起的时候要加上-F参数才能把信息dump处理



 


jmap 
 
 
 

   #提取进程内存信息,用于分析OOM导致原因 
  
jmap -dump:format=b,file=HeapDump.bin <pid> 
  
#输出堆信息 
  
 
  jmap -heap <PID> 
  
 
 
 
 

   jhat简单分析内存中对象情况 
 
 
 

   #读取dump文件,生成报告,并启动WEB服务器,默认端口为7000 
  
jhat -J-mx768m -stack false HeapDump.bin 
  

# 访问报告,需要打开浏览器访问其7000端口,页面底下的汇总信息有些帮助的 
  
Show instance counts for all classes (including platform) 
  
Show instance counts for all classes (excluding platform) 
  
Show heap histogram 
  
 
 
 
 

   jstat 
 
 
 

   jstat -gcutil <pid> 2000 100 # 每2秒输出一次内存情况,连续输出100次 
 
 
 

   jstat -gc<pid> 输出heap各个分区大小 
 
 
 
 
 
 

   查看运行时jvm参数  
 
 
 

   jinfo -flag <jvm参数> <pid> 
  
举例: 
  
jinfo -flag MaxHeapSize 107249 
  
 
 
 
 

   获取当前JVM默认参数  
 
 
 

   java -XX:+PrintFlagsFinal -version | grep MaxHeapSize

 参考:

用Eclipse Memory Analyzer查找内存泄露