http://hi.baidu.com/619195553dream/blog/item/be9f12adc1b5a3e71f17a2e9.html问题描述
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 "

Java Application中配置程序JVM内存大小,-Xms最小值,-Xmx最大值,-Xmx不能小于-Xms

转载于:https://www.cnblogs.com/svennee/p/4081149.html

Exception in thread main java.lang.OutOfMemoryError: Java heap space(Java堆空间内存溢出)解决方法...相关推荐

  1. Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Compressed class space

    目录 主要得报错信息如下: 解决办法 主要得报错信息如下: 2022-05-16 07:56:47.702|ERROR|http-nio-8089-exec-11|46|c.g.d.npp.web.c ...

  2. 【错误记录】Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of )

    一.报错信息 在使用 Groovy 闭包时 , 会报如下错误 : Exception in thread "main" groovy.lang.MissingMethodExcep ...

  3. Caused by: java.lang.OutOfMemoryError: Compressed class space 什么问题

    2020-12-17 09:46:47.413 [http-nio-8080-exec-91] ERROR o.gil.three.admin.exception.GlobalExceptionHan ...

  4. OutOfMemoryError:Java堆空间–分析和解决方法

    java.lang.OutOfMemoryError:Java堆问题是在支持或开发复杂的Java EE应用程序时可能会遇到的最复杂的问题之一. 这篇简短的文章将为您提供此JVM HotSpot Out ...

  5. java heap space 什么意思_java内存溢出之Java heap space

    作为一个java程序员,大家都应该认识JVM.JVM作为java的核心,实在太重要了.而内存溢出又是程序员常遇到的错误之一,如果你对JVM的原理足够了解,那么解决这样的问题就不在是一件困难的事情. 关 ...

  6. javah导出类的头文件抛出异常——java.lang.IllegalArgumentException: Not a valid class name(原因及解决方法)

    [0]README 0.1) 本文旨在给出 java.lang.IllegalArgumentException 异常的原因 和 处理方法, 该异常和 javah 没有半毛钱关系 : 0.2) 本文附 ...

  7. 错误码500:消息 java.lang.IllegalStateException: (No output folder)无输出目录解决方法

    本文的解决方法是刚安装好tomcat后就无法正常运行的情况.不涉及项目 安装tomcat有两种方式,一个是解压缩版本,一个是安装版,当出现这个问题时一般为解压缩版本才出现 提示错误如下:localho ...

  8. jmeter更改java内存,jmeter内存溢出解决方法

    使用jmeter进行压力测试时遇到一段时间后报内存溢出outfmenmory错误,导致jmeter卡死了,先尝试在jmeter.bat中增加了JVM_ARGS="-Xmx2048m -Xms ...

  9. java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again

    文章目录 java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again异常分析及解决 问题描述: 问题分析: ...

  10. [JVM-翻译]揭开java.lang.OutOfMemoryError面纱之一

    Java.lang.OutOfMemoryError是什么  Java.lang.OutOfMemory是java.lang.VirtualMachineError的一个子类,当Java虚拟机中断,或 ...

最新文章

  1. 对话计算机史学权威,才知道量子计算机马上要来了
  2. Centos 下安装Docker 遇到的一些错误
  3. android LinearLayout添加分隔线
  4. 那些年我们一起隐藏的bug
  5. 机器学习NLP领域入门
  6. Windows10安装IIS服务器
  7. 《女士品茶》读书笔记
  8. android导航软件安装,【图】手把手教你安装免费且无需流量的安卓版本凯立德导航软件!...
  9. Windows10更新错误显示0x8000ffff,易升更新0xc1900107
  10. 广告词 android,广告语猜猜看
  11. kubernetes资源管理平台ratel
  12. 四、网络层(一)网络层的功能
  13. Python编程基础 第二章 编程练习 (第2轮开课补充)编写程序实现以下功能:计算beg到end之间的所有水仙花数并输出。如果beg到end之间不存在水仙花数,则输出“not found”。
  14. 通过Cloudreve+云服务器快速搭建一个私人云盘
  15. 【精选模板】古风汉服影楼摄影PSD源文件,绝美的素材,附带预览图
  16. Android移动应用设计与开发(第2版)——基于Android Studio开发环境 胡敏 黄宏程 李冲编著
  17. 2022广航蓝桥杯选拔赛压轴题:取数博弈游戏
  18. 中文NER任务简析与深度算法模型总结和实战展示
  19. 一个研究生学历到底值多少钱?为什么现在那么多人选择在职考研?
  20. 2019年4月-日本双人自由10日游

热门文章

  1. 推荐歌曲《 起风了》
  2. SpringBooot:Redis:根据两地经纬度计算距离
  3. 程序媛:我的痘痘不让我编程
  4. 计算机的来源知识,计算机的由来计算机从诞生到现在才不过50多年的时间,可是发展却很快,已先后经历了四代,可以说是人丁兴旺。世界上第一台电子计算机1946年诞生于美国,名为埃尼阿克(ENIAC)...
  5. entity framework 新手入门篇(1)-建立模型
  6. Chrome debugger调试技巧
  7. NL驱动表错误导致的性能问题
  8. UNITY中帧动画的制作
  9. matlab求椭圆周长,用matlab计算椭圆周长及牛顿迭代的matlab完成
  10. 先定个小目标,免费360度评价(评估)反馈系统上线,开放部分源码