找到该死的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

 

 

 

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, 内存
, object
, outofmemoryerror
, mat
, hprof
, java outofmemory
, java.lang
, lang
, reflect
JVisualVM
outofmemoryerror、out of memory error、安卓outofmemoryerror、mvn outofmemoryerror、onoutofmemoryerror,以便于您获取更多的相关知识。

时间: 2024-09-01 13:51:34

找到该死的OutOfMemoryError的相关文章

asp.net 编译器错误信息: CS0006: 未能找到元数据文件 该死的.NET_实用技巧

编译器错误信息: CS0006: 未能找到元数据文件"C:\\WINDOWS\\assembly\\GAC_32\\System.EnterpriseServices\\2.0.0.0__b03f5f7f11d50a3a\\System.EnterpriseServices.dll" 提示这样的报错 郁闷 下面给出解决的方案 gacutil.exe for dotnet 2.0. 复制代码 代码如下: gacutil /i DriveLetter: \ YourPath \ YourA

请注释你那该死的代码

  我站出来就是为了要说一句: 请注释你那该死的代码. 每次我遇到一个程序员--有时是相当高水平的--总发现他会认为:你并不需要给你的代码加注释.我要说,这就是胡说八道.我很长时间以来一直这么表 达.问题是,让事情改变要比你想象的难.虽然我们正处在努力编写那些讨厌的代码.准备发布一些会令人惊叹的新东西的紧要关头,我们仍然几乎注释所有的东 西.没有任何借口不去做这些事情.每隔3到7行代码,你就能看到有长篇的社论发表.有时,几百行代码里,你就能找到一个很好的笑话. 错误的藏身之处 看,一个是你想要的

win7系统如何找到隐藏的木马病毒

  具体方法如下: 1.集成到程序中 其实木马也是一个服务器-客户端程序,它为了不让用户能轻易地把它删除,就常常集成到程序里,一旦用户激活木马程序,那么木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖原文件,这样即使木马被删除了,只要运行捆绑了木马的应用程序,木马又会被安装上去了.绑定到某一应用程序中,如绑定到系统文件,那么每一次Windows启动均会启动木马. 2.隐藏在配置文件中 木马实在是太狡猾,知道菜鸟们平时使用的是图形化界面的操作系统,对于那些已经不太重要的配置文件大多数是不闻不

Java中OutOfMemoryError(内存溢出)的三种情况及解决办法(转)

相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识.jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域).Heap space(堆区域).Java Stacks(Java栈).其中永久保存区域主要存放Class

请注释你那该死的代码!

我站出来就是为了要说一句: 请注释你那该死的代码. 每次我遇到一个程序员--有时是相当高水的--总发现他会认为:你并不需要给你的代码加注释.我要说,这就是胡说八道.我很长时间以来一直这么表达.问题是,让事情改变要比你想象的难.虽然我们正处在努力编写那些讨厌的代码.准备发布一些会令人惊叹的新东西的紧要关头,我们仍然几乎注释所有的东西.没有任何借口不去做这些事情.每隔3到7行代码,你就能看到有长篇的社论发表.有时,几百行代码里,你就能找到一个很好的笑话. 错误的藏身之处 看,一个是你想要的,一个是你

深入解析Java OutOfMemoryError

在Java中,所有对象都存储在堆中.他们通过new关键字来进行分配,JVM会检查是否所有线程都无法在访问他们了,并且会将他们进行回收.在大多数时候程序员都不会有一丝一毫的察觉,这些工作都被静悄悄的执行.但是,有时候在发布前的最后一天,程序挂了. Exception in thread "main" java.lang.OutOfMemoryError: Java heap space  OutOfMemoryError是一个让人很郁闷的异常.它通常说明你干了写错误的事情:没必要的长时间

查找并修复Android中的内存泄露—OutOfMemoryError

[编者按]本文作者为来自南非约翰内斯堡的女程序员 Rebecca Franks,Rebecca 热衷于安卓开发,拥有4年安卓应用开发经验.有点完美主义者,喜爱美食. 本文系国内ITOM管理平台 OneAPM 编译呈现,以下为正文. Android 程序中很容易出现内存泄露问题.毫无戒心的开发者可能每天都会造成一些内存泄露,却不自知.你可能从未注意过这类错误,或者甚至都不知道它们的存在.直到你遇到下面这样的异常: java.lang.OutOfMemoryError: Failed to allo

JVM源码分析之临门一脚的OutOfMemoryError完全解读

概述 OutOfMemoryError,说的是java.lang.OutOfMemoryError,是JDK里自带的异常,顾名思义,说的就是内存溢出,当我们的系统内存严重不足的时候就会抛出这个异常(PS:注意这是一个Error,不是一个Exception,所以当我们要catch异常的时候要注意哦),这个异常说常见也常见,说不常见其实也见得不多,不过作为Java程序员至少应该都听过吧,如果你对jvm不是很熟,或者对OutOfMemoryError这个异常了解不是很深的话,这篇文章肯定还是可以给你带

蚂蚁金服寒泉子:JVM源码分析之临门一脚的OutOfMemoryError完全解读

原文出自[听云技术博客]:http://blog.tingyun.com/web/article/detail/1210 概述 OutOfMemoryError,说的是java.lang.OutOfMemoryError,是JDK里自带的异常,顾名思义,说的就是内存溢出,当我们的系统内存严重不足的时候就会抛出这个异常(PS:注意这是一个Error,不是一个Exception,所以当我们要catch异常的时候要注意哦),这个异常说常见也常见,说不常见其实也见得不多,不过作为Java程序员至少应该都