Java 虚拟机内存诊断

虚拟机诊断相关命令

jmap -heap

打印heap的概要信息,GC使用的算法,heap的配置及使用状况java

jmap -heap pid

jmap -histo

统计各个类的实例数目以及占用内存,并按照内存使用量从多至少的顺序排列算法

jmap -histo:live pid

jmap -dump

把堆内存的使用状况 dump 到文件中,live 只保存堆中的存活对象dom

jmap -dump:live,format=b,file=dump.bin pid

输出 GC 日志参数

  • 当堆内存空间溢出时输出堆的内存快照
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/java/logs/
  • 输出 GC 详细日志,loggc 指定日志路径
-XX:PrintGCDetails -Xloggc:/data/java/logs/

eclipse MAT

MAT 计算对象占据内存分为 Shallow heap 和 Retained heap 两种方式eclipse

  • Shallow heap:对象自身所占据的内存
  • Retained heap

指的是当对象再也不被引用时,垃圾回收器所能回收的总内存,包括对象自身所占据的内存,以及仅可以经过该对象引用到的其余对象所占据的内存日志

MAT 包含了两个比较重要的视图 直方图(histogram)和支配树(dominator tree)code

  • 直方图

MAT 的直方图相似 jmap -histo 命令输出的结果,可以展现各个类的实例数目以及这些实例的 Shallow heap 总和orm

  • 支配树
相关文章
相关标签/搜索