技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁(yè) > 教程 > 服務(wù)器類 >

找到該死的OutOfMemoryError

來源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2019-01-27 18:12┆點(diǎn)擊:


看到下面這一堆信息, 我想你應(yīng)該知道要做什么了.

main at java.lang.OutOfMemoryError.<init>()V (OutOfMemoryError.java:48) at java.util.Arrays.copyOfRange([CII)[C (Arrays.java:2694) at java.lang.String.<init>([CII)V (String.java:203) at java.lang.StringBuilder.toString()Ljava/lang/String; (StringBuilder.java:405) at com.mkk.utils.GuidGeneratorTest.outOfMemory()V (GuidGeneratorTest.java:25) at sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Method.java:601)

加大內(nèi)存,加大內(nèi)存, 內(nèi)存溢出了, 于是我設(shè)置了

JAVA_OPTS=-server -Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=512m -Xss512k

重啟服務(wù)器, 沒過多久又 OutOfMemoryError

是時(shí)候知道該死的OutOfMemoryError,

所以, 請(qǐng)給JAVA_OPTS添加 

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=http://www.3lian.com/home/error

(注: 紅色部分為服務(wù)器的一路徑,當(dāng)OutOfMemoryError是JVM信息會(huì)保存在該目錄里)

再重啟服務(wù)器,期待下一次的OutOfMemoryError吧.

是的, OutOfMemoryError又來了...

現(xiàn)在,去/home/error目錄看看吧. 是否有類似java_pid6472.hprof的文件生成, 還很大(好幾十或幾百M(fèi)B).

現(xiàn)在, 推薦去下載MAT(Memory Analyzer Tool)工具在看看是什么東東把內(nèi)存都消耗完了(也可用JDK自帶的jvisualvm.exe工具). 下載地址:

最后, 找到了源頭. 去修改代碼吧.