找到该死的OutOfMemoryError

看到下面这一堆信息, 我想你应该知道要做什么了.

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


对于如何分析 .hprof文件找到该死的OutOfMemoryError出现在哪儿, 我推荐阅读这篇文章

http://www.blogjava.net/rosen/archive/2010/06/13/323522.html


最后, 找到了源头. 去修改代码吧.

....




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值