看到下面这一堆信息, 我想你应该知道要做什么了.
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)
加大内存,加大内存, 内存溢出了, 于是我设置了
JAVA_OPTS=-server -Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=512m -Xss512k
重启服务器, 没过多久又 OutOfMemoryError
是时候知道该死的OutOfMemoryError,
所以, 请给JAVA_OPTS添加
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/error
(注: 红色部分为服务器的一路径,当OutOfMemoryError是JVM信息会保存在该目录里)
再重启服务器,期待下一次的OutOfMemoryError吧.
是的, OutOfMemoryError又来了...
现在,去/home/error目录看看吧. 是否有类似java_pid6472.hprof的文件生成, 还很大(好几十或几百MB).
现在, 推荐去下载MAT(Memory Analyzer Tool)工具在看看是什么东东把内存都消耗完了(也可用JDK自带的jvisualvm.exe工具). 下载地址:
http://www.eclipse.org/mat/downloads.php
最后, 找到了源头. 去修改代码吧.
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, 内存
, object
, outofmemoryerror
, mat
, hprof
, java outofmemory
, java.lang
, lang
, reflect
JVisualVM
outofmemoryerror、out of memory error、安卓outofmemoryerror、mvn outofmemoryerror、onoutofmemoryerror,以便于您获取更多的相关知识。