概述
用jmap -heap命令可以查看linux堆内存分布
具体用法
1:先查出tomcat的进程号
例如:
然后执行 jmap -heap 7095 可以打印出整体的堆信息
可以看到经过分配的存活区与eden比率=2:8
1)eden区:775M
2)两个存活区大小:都为127M(存活区=space)
3)年轻代大小:1G
4)老年代大小:2G
5)最大堆内存大小:年轻代大小+老年代大小=3G
7)java应用程序占用内存大小:最大堆内存大小=3G
NewRatio = 2 表示年轻代(e+2s):老年代=1:2,指新生代占整个堆的1/3
SurvivorRatio = 8 表示2个S:eden=2:8,一个S占年轻代的1/10
年轻代=eden+2s
常见错误
1:执行 jmap -heap 遇到:
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file
执行:echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
2:遇到 bash: /proc/sys/kernel/yama/ptrace_scope: Read-only file system
执行:sudo vim /etc/sysctl.d/10-ptrace.conf
添加或修改以下这一句:(0:允许, 1:不允许)
kernel.yama.ptrace_scope = 0