看到下面這一堆信息, 我想你應(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工具). 下載地址:
最后, 找到了源頭. 去修改代碼吧.