问题描述
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

解决方案[转]
一直都知道可以设置jvm heap大小,一直用eclipse写/调试java程序。一直用命令行or console加参数跑程序。现象:在eclipse的配置文件eclipse.ini中设置-vmargs -Xms500m -Xmx1024m,在eclipse中直接run 或者debug某些耗内存的程序时依然出现java.lang.OutOfMemoryError: Java Heap Space错误,即通常认为的内存不足,java虚拟机内存不够用。而在命令行加这些参数则有效果,不会出错。这说明一个问题,这些参数根本没有起作用。今天需要在eclipse里调试程序,还没到需要调试的地方就heap error了,在网上搜了很多地方,得到了最终的答案:
选中被运行的类,点击菜单‘run->run...’,选择(x)=Argument标签页下的vm arguments框里
输入 -Xmx800m, 保存运行。
原来还需要对每个project单独设置,汗...

有三种可能导致OutOfMemoryError。首先是,此JVM有真实的内存泄漏,导致此JVM堆在内部实现时产生了一个Bug。这极不可靠。所有JVM都经过充分的测试,并且,如果有人发现这种bug,它将绝对是最高的优先级。因此你可以非常宽心地排除这种可能性。

第二种可能的OutOfMemoryError原因只不过是,你没有为你的应用程序运行时给予足够多的可用内存。这种情况,有两种可能的方案,或者增加 JVM堆可用大小,或者减少你的应用程序所需的内存总量。提高JVM可用堆大小可以简单的使用JVM的 -Xmx 参数。假如你将此参数设置尽可能的大(可用内存极限不要超过系统物理内存,否则你的应用程序将分页并暂停),仍然有以上所提到的内存问题,那么,你需要减 少你的应用程序所可能用到内存总量。减少应用程序内存可能是简单的,你可能允许一些集合过大,例如使用了许多大的缓冲区。或者它过于复杂,要求你重新实现 一些类,乃至重新设计应用程序。

读者 Jams Stauffer 指出有些JVM(例如 sun的 JVMs),还有一个“Perm”参数用来处理JVM结构与类对象。如果你正在使用一个数量非常巨大的类集,它有可能运行在"Perm"空间之外,然后你 需要增加此空间的大小,例如,sun的JVM使用 -XX:PermSize 与 -XX:MaxPermSize 选项。

第三种导致OutOfMemoryError最为常见,无心的对象引用保持。你没有明确无误的释放对象,以致于你的堆增长再增长,直到你没有额外的空间。

处理OutOfMemoryError:

是JVM内部的BUG?不太可能。如果是,这是优先级最高的BUG(为什么还没有人发现它,而你碰到了?)。

没有足够的内存分配给实际运行的应用程序?两种选择:使用-Xmx参数增加堆的最大使用内存(或者使用-XX:MaxPermSize参数增加Perm空 间大小); 或者使用更小的集合/缓冲区/表空间/对象.....,以减少所需要的内存总量,也就是说,可以调整对象大小,重新设计与重新实现你的应用程 序。

无心的对象引用保持?找到保持这些无意引用的源对象,改变它并释放这些对象。在IBM开发者社区的文章纲要式的揭示了这样一个通用的处理过程。这个过程主 要是等到应用程序到达恒定状态--你将期望最多的新创建的对象是临时对象,并且可以被垃圾收集器收集。这常常是在应用程序所有的初始化工作完成之后。

强迫垃圾收集,获得一个堆的对象快照。
做任何工作可能正在导到无意的对象引用保持。
强迫另一次垃圾收集并获得第二次堆的对象快照。
比较这两个快照,观察从第一个快照到第二个快照哪些对象在数量上有所增加。因为你在快照之前强迫垃圾收集,剩下的将是所有被应用程序引用的对象,比较两个快照将准确的标识那些新创建的、保留在应用程序里的对象。
根据你对应用程序的认识,决定两个快照比较中,哪些对象正在无意的保持对象引用。
跟踪前导引用,找到哪些对象正在引用这些无意的保持对象,直到你找到导致此问题的源对象

启动虚拟机的时候,加上一个参数:-Xms800m -Xmx800m就好了
-Xms <size>
设置JVM初始化堆内存大小

-Xmx <size>
设置JVM最大的堆内存大小

如果是应用程序,则:java -Xms800m -Xmx800m 你的类名
如果是tomcat之类的web服务器,在这个服务器的启动文件后面加上这个参数即可。

另外设置环境变量
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

参考来源
http://hi.baidu.com/dearfenix/blog/item/1b0ce80e64ca12ce7bcbe109.html
http://hi.baidu.com/%C2%ED%D3%C0/blog/item/90d9e5033663118bd43f7c2a.html
http://www.chq.name/content/view/306_2.html

转载于:https://blog.51cto.com/tscfengkui/623458

内存不足 java.lang.OutOfMemoryError: Java heap space相关推荐

  1. 应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)

    http://www.educity.cn/wenda/351088.html 使用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap s ...

  2. java内存溢出模拟_模拟实战排查堆内存溢出(java.lang.OutOfMemoryError: Java heap space)问题...

    前言: 模拟实战中排查堆内存溢出(java.lang.OutOfMemoryError: Java heap space)的问题. 堆内存溢出的原因:一般都是创建了大量的对象,这些对象一直被引用着,无 ...

  3. ES内存溢出,报错:java.lang.OutOfMemoryError: Java heap space

    es集群挂掉,报错信息如下: [WARN ][o.e.h.n.Netty4HttpServerTransport] [capitalcentre-14] caught exception while ...

  4. java.lang.OutOfMemoryError: Java heap space内存溢出解决方案

    java.lang.OutOfMemoryError: Java heap space内存溢出解决方案 一.设置环境变量 JAVA_OPTS= -Xms2048m -Xmx2048m 二.在Eclil ...

  5. java缓存内存泄漏_记一次mybaits缓存导致的内存溢出 java.lang.OutOfMemoryError: Java heap space...

    先贴一下错误截图 org.springframework.web.util.NestedServletException: Handler dispatch failed; nested except ...

  6. java.lang.OutOfMemoryError: Java heap space错误及...

    为什么80%的码农都做不了架构师?>>>    以下是从网上找到的关于堆空间溢出的错误解决办法: java.lang.OutOfMemoryError: Java heap spac ...

  7. java.lang.OutOfMemoryError: Java heap space的解决办法

    如果在启动过程中出现内存溢出问题,抛出类似如下异常信息: java.lang.OutOfMemoryError: Java heap space 可以尝试办法: A.修改Tomcat/bin/cata ...

  8. (转)java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)

    java.lang.OutOfMemoryError: Java heap space =================================================== 使用Ja ...

  9. Exception in thread main java.lang.OutOfMemoryError: Java heap space

    在做大批量数据测试的时候,服务端初始化出现问题 测试规模,没个站2万点量测数据,整个数据超过20万,初始化过程中对量测数据初始化,按站分别初始化,但是初始化到总数据量10万的时候就会报内存溢出错误. ...

最新文章

  1. Silverlight+WCF 实战-网络象棋最终篇之解决重复的消息提示(八)
  2. 【算法】双指针算法 ( 双指针算法分类 | 相向双指针 | 有效回文串 )
  3. a3国际服服务器未响应,A3幸存者国际服
  4. [BZOJ2738]矩阵乘法
  5. NFS运维二班--梁瑞
  6. bootstrap-table文档
  7. 拥抱PostgreSQL,红帽再表态:SSPL的MongoDB坚决不用
  8. SVN服务的部署及使用
  9. FabFilter Total Bundle 2021 mac版:14个专业的FabFilter插件(含安装与卸载)
  10. basic语言基础 chm_拒付论文装订费错失博士学位,C语言之父毕业论文丢失52年重见天日...
  11. ESP8266WiFi模块的使用以及arduino调试
  12. 绘画教程:动漫人体肌肉的详细画法
  13. Python爬虫(第九周)
  14. JAVA求解【乱序整数序列两数之和绝对值最小】
  15. Android MVP 实践之路(理解篇)
  16. Σoφoς:简单但有效的前向安全对称可搜索加密
  17. 自学计算机等级可以在哪学,计算机二级怎么自学
  18. wifidog原理分析
  19. 你对明星直播带货有多少误解?
  20. 表格使用格式刷卡顿的一种解决办法

热门文章

  1. C++中lock_guard的学习
  2. C++ primer第六章6.4函数的学习 之函数的重载
  3. 算法入门篇七 前缀树
  4. Java命令:jinfo — 查看进程参数
  5. 三网融合情况下,实时语音通信技术的研究
  6. 解决 List 执行 remove 时报异常 java.lang.UnsupportedOperationException
  7. HTTP协议状态码详解
  8. 事务相关、不可重复读与幻读的区别
  9. Python基础小结
  10. CASIO 5800P计算器游戏--猜数字游戏