java服务内存占用过高
生活随笔
收集整理的這篇文章主要介紹了
java服务内存占用过高
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1、查看內(nèi)存占用高的進(jìn)程
- 2、查看對象個(gè)數(shù)和占用內(nèi)存大小
- 3、導(dǎo)出內(nèi)存鏡像
- 4、安裝獨(dú)立版本的Memory Analyzer工具
- 5、使用MAT工具進(jìn)行分析
- 6、注意
以下代碼沒有特殊說明,都是指終端命令行操作
1、查看內(nèi)存占用高的進(jìn)程
top2、查看對象個(gè)數(shù)和占用內(nèi)存大小
jmap -histo 624
可以看到程序中各個(gè)對象所占用內(nèi)存的情況,根據(jù)占用字節(jié)數(shù)大小降序顯示,這里只能看出哪些對象占用內(nèi)存高,但是還不能具體定位到問題代碼,需要進(jìn)一步排查。
有個(gè)自定義的類Animal,個(gè)數(shù)和占用內(nèi)存比較高,是重點(diǎn)懷疑對象。
圖中一些特殊字符的含義如下:
| [C | 表示char[],一般與String對象相關(guān),因?yàn)镾tring其實(shí)就是基于char數(shù)組實(shí)現(xiàn)的 |
| [S | 表示short[] |
| [I | 表示int[] |
| [B | 表示byte[] |
| [Z | 表示boolean[] |
| [J | 表示long[] |
| [F | 表示float[] |
| [D | 表示double[] |
| [II | 表示int[][] |
| [Ljava.lang.Object | java.lang.Object類型的數(shù)組 |
| [Ljava.lang.String | java.lang.String類型的數(shù)組 |
3、導(dǎo)出內(nèi)存鏡像
jmap -dump:format=b,file=testDump.hprof 6244、安裝獨(dú)立版本的Memory Analyzer工具
下載鏈接:
http://www.eclipse.org/mat/downloads.php
5、使用MAT工具進(jìn)行分析
打開dump文件
查看對象個(gè)數(shù)和占用內(nèi)存數(shù)
查看每個(gè)線程的內(nèi)存使用情況
6、注意
當(dāng)dump文件過大時(shí),Memory Analyzer工具會(huì)提示解析出錯(cuò)
An internal error occurred during: "Parsing heap dump from '/Users/mac/cece/testDump.hprof'". Java heap space需要找到配置文件MemoryAnalyzer.ini,修改-Xmx的配置大小,如:
-startup ../Eclipse/plugins/org.eclipse.equinox.launcher_1.6.200.v20210416-2027.jar --launcher.library ../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.2.200.v20210527-0259 -vmargs -Xmx4g -Dorg.eclipse.swt.internal.carbon.smallFonts -XstartOnFirstThread-Xmx配置的默認(rèn)大小為1024m
總結(jié)
以上是生活随笔為你收集整理的java服务内存占用过高的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux css压缩工具下载,推荐15
- 下一篇: 均值已知检验方差_21.(6)AB te