JVM分析
在運行java進程是,可以通過jps命令查看進程PID,使用java的同居jmap命令可以得到jvm的dump文件;
在網上找了兩種方式獲取dump文件
獲取JVM的dump文件的兩種方式:轉載來源https://www.cnblogs.com/liu-ke/p/6622350.html【流柯】
1. JVM啟動時增加兩個參數:
#出現 OOME 時生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError #生成堆文件地址: -XX:HeapDumpPath=/home/liuke/jvmlogs/?2. 發現程序異常前通過執行指令,直接生成當前JVM的dmp文件,6214是指JVM的進程號
jmap -dump:format=b,file=serviceDump.dat 6214?由于第一種方式是一種事后方式,需要等待當前JVM出現問題后才能生成dmp文件,實時性不高,第二種方式在執行時,JVM是暫停服務的,所以對線上的運行會產生影響。所以建議第一種方式。
分析dump文件?:轉載來源https://blog.csdn.net/lipc_/article/details/52034743【JVM性能調優之生成堆的dump文件】,這里面講了一些分析和優化,可以多看看
了解有下面幾種工具可以打開該文件:
?使用這些工具時為了確保加載速度,建議設置最大內存為6G。據說,這些工具都無法直觀地觀察到內存泄漏,Visual VM雖能觀察到對象大小,但看不到調用堆棧;HeapAnalyzer雖然能看到調用堆棧,卻無法正確打開一個3G的文件。因此,我們又選用了Eclipse專門的靜態內存分析工具:Mat。
?3.分析內存泄漏
? 通過Mat我們能清楚地看到,哪些對象被懷疑為內存泄漏,哪些對象占的空間最大及對象的調用關系。通過Mat或JMX我們還可以分析線程狀態,可以觀察到線程被阻塞在哪個對象上,從而判斷系統的瓶頸。
轉載于:https://www.cnblogs.com/TheoryDance/p/10641648.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 如何用php开发oa系统,oa系统怎么使
- 下一篇: centos6.8安装docker