JVM内存分析工具
参考
jvm内存分解:?? http://liangpzhmz.blog.163.com/blog/static/101716295200961321333915/
?
http://blog.csdn.net/fenglibing/article/details/6298326
?
http://blog.csdn.net/fenglibing/article/details/6411953
?
http://apps.hi.baidu.com/share/detail/23550625
?
jdk的工具用途介绍:
http://blog.csdn.net/kelly859/article/details/5827365
?
jps查看JAVA进程
jmap查看内存中对象及占用空间,比较那些对象被回收,可以结合MAT工具 http://download.eclipse.org/mat/1.1/update-site/
?
jstat查看内存具体情况,分析内存
jconsole GUI工具 http://af1200.blog.163.com/blog/static/17132274201051013550361/
http://blog.sina.com.cn/s/blog_5dc29fcc0100xiex.html
?
MAT报告分析说明:? http://tech.ddvip.com/2010-07/1279867858157995.html
http://rednaxelafx.iteye.com/blog/1048958
?
shallow heap和retained heap解析 :?? http://hi.baidu.com/qmiao128/blog/item/bf9d66a4b3e313eb9152eed1.html
?
获取JAVA内存泄漏信息存储自动存储成文件的方法 http://jiangnanguying.iteye.com/blog/539697
?
两种手段获得内存泄漏时的内存中对象快照,一种是用 jmap直接获取,另一种是修改JVM参数,增加
-XX:-HeapDumpOnOutOfMemoryError?然后就可以在JVM的工作目录(classLoader的目录)找到文件
?
java.lang.OutOfMemoryError:?Java?heap?space ??
Dumping?heap?to?java_pid6280.hprof?... ??
Heap?dump?file?created?[50549348?bytes?in?1.444?secs]??
?
内存使用过高,可以用JDK参数和JMAP结合MAT或者JHAP查看内存中到底放了什么对象.
CPU使用高,可以使用jstack检查那个线程问题和死锁。
可以通过jconsole的mbean设置监控内存和死锁,线程等在一段时间内的情况,当然jprofile更好,
每次GC后,内存减少,则可能存在内存泄露问题
?
GC回收机制:
http://jeromecen1021.blog.163.com/blog/static/18851527120117274624888/
?