JVM optimization:修订间差异
imported>Soleverlee |
imported>Soleverlee |
||
第18行: | 第18行: | ||
=jmap命令= | =jmap命令= | ||
<source lang="bash"> | |||
jmap [option] <pid> | |||
<none> to print same info as Solaris pmap | |||
-heap to print java heap summary | |||
-histo[:live] to print histogram of java object heap; if the "live" | |||
suboption is specified, only count live objects | |||
-permstat to print permanent generation statistics | |||
... | |||
</source> | |||
其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。 | |||
jmap -dump:live,format=b,file=xxx.xxx [pid] 则可以将当前Java进程的内存占用情况导出来,方便用专门的内存分析工具(例如:MAT)来分析。 | |||
<source lang="bash"> | |||
jmap -histo:live 31560 | head -n 10 | |||
</source> | |||
[[Image:Jmap_Head_Out.png|600px]] | |||
[[Category:Programe]] | [[Category:Programe]] |
2015年11月2日 (一) 15:07的版本
这几天发现自己写的Web程序很占内存,512m的服务器部署两个tomcat,一个mysql :<。性能吃紧,学习下JVM的欸村分析方法。
查看Java进程
jps
top #shift +m按内存排序
有介绍说可以通过PS命令查看进程的线程占用情况,但这里没能提供更多的信息
ps -mp 31560 -o THREAD,tid,time,rss,size,%mem
jmap命令
jmap [option] <pid>
<none> to print same info as Solaris pmap
-heap to print java heap summary
-histo[:live] to print histogram of java object heap; if the "live"
suboption is specified, only count live objects
-permstat to print permanent generation statistics
...
其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。
jmap -dump:live,format=b,file=xxx.xxx [pid] 则可以将当前Java进程的内存占用情况导出来,方便用专门的内存分析工具(例如:MAT)来分析。
jmap -histo:live 31560 | head -n 10