1. jmap -heap pid
查看java 堆(heap)使用情况
using thread-local object allocation.
Parallel GC with 4 thread(s) //GC 方式 Heap Configuration: //堆内存初始化配置
MinHeapFreeRatio=40 //对应jvm启动参数-XX:MinHeapFreeRatio设置JVM堆最小空闲比率(default 40)
MaxHeapFreeRatio=70 //对应jvm启动参数 -XX:MaxHeapFreeRatio设置JVM堆最大空闲比率(default 70)
MaxHeapSize=512.0MB //对应jvm启动参数-XX:MaxHeapSize=设置JVM堆的最大大小
NewSize = 1.0MB //对应jvm启动参数-XX:NewSize=设置JVM堆的‘新生代’的默认大小
MaxNewSize =4095MB //对应jvm启动参数-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小
OldSize = 4.0MB //对应jvm启动参数-XX:OldSize=:设置JVM堆的‘老生代’的大小
NewRatio = 8 //对应jvm启动参数-XX:NewRatio=:‘新生代’和‘老生代’的大小比率
SurvivorRatio = 8 //对应jvm启动参数-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值
PermSize= 16.0MB //对应jvm启动参数-XX:PermSize=:设置JVM堆的‘永生代’的初始大小
MaxPermSize=64.0MB //对应jvm启动参数-XX:MaxPermSize=:设置JVM堆的‘永生代’的最大大小
Heap Usage: //堆内存分步
PS Young Generation
Eden Space: //Eden区内存分布
capacity = (19.4375MB) //Eden区总容量
used = (19.3438MB) //Eden区已使用
free = 11664 (0.05625MB) //Eden区剩余容量
99.106% used //Eden区使用比率
From Space: //其中一个Survivor区的内存分布
capacity = (8.125MB)
used = 32768 (0.03125MB)
free = (8.09375MB)
0.% used
To Space: //另一个Survivor区的内存分布
capacity = (8.875MB)
used = 0 (0.0MB)
free = (8.875MB)
0.0% used
PS Old Generation //当前的Old区内存分布
capacity = (349.3125MB)
used = (307.953MB)
free = (42.047MB)
87.573% used
PS Perm Generation //当前的 “永生代” 内存分布
capacity = (30.75MB)
used = (27.672MB)
free = (3.32812MB)
89.348% used
2. jmap -histo pid
查看堆内存(histogram)中的对象数量,大小
num #instances #bytes class name
序号 实例个数 字节数 类名
———————————————-
1: [C
2: java.lang.String
3: [B
4: com.tongli.book.form.Book
5: com.tongli.book.form.Book
6: 65645 [Ljava.lang.Object;
7: 59627
8: java.util.HashMap$Entry
9: [[B
……….
total
3. jmap -dump pid
将内存使用的详细情况输出到文件
map -dump:format=b,file=m.datpid
用jhat命令可以参看 jhat -port 5000 m.dat
在浏览器中访问:http://localhost:5000/ 查看详细信息
sun 官方文档 http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jmap.html
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217482.html原文链接:https://javaforall.net
