关于java.lang.OutOfMemoryError:java heap space错误解决方案
//首先检查程序有没 有限入死循环
这个问题主要还是由这 个问题 java.lang. OutOfMemor yError: Java heap space 引起的。第一次出现这 样的的问题以后,引发 了其他的问题。在网上 一查可能是JAVA的 堆栈设置太小的原因。
跟据网上的答案大致有 这两种解决方法:
1、设置环境变量
解决方法:手动设置H eap size
修改TOMCAT_H OME/bin/ca talina.sh
set JAVA_OPTS= -Xms32m -Xmx512m
可以根据自己机器的内 存进行更改。
2、java -Xms32m -Xmx800m className
就是在执行JAVA类 文件时加上这个参数, 其中classNam e是需要执行的确类名 。(包括包名)
这个解决问题了。而且 执行的速度比没有设置 的时候快很多。
如果在测试的时候可能 会用Eclispe 这时候就需要在Ecl ipse ->run -arguments 中的VM arguments 中输入-Xms32m -Xmx800m这个 参数就可以了。
后来在Eclilps e中修改了启动参数, 在VM arguments 加入了-Xms32m -Xmx800m,问 题解决。
一、java.lan g.OutOfMem oryError: PermGen space
PermGen space的全称是P ermanent Generation space,是指内存 的永久保存区域,
这块内存主要是被JV M存放Class和M eta信息的,Cla ss在被Loader 时就会被放到Perm Gen space中,
它和存放类实例(In stance)的He ap区域不同,GC( Garbage Collection )不会在主程序运行期 对
PermGen space进行清理, 所以如果你的应用中有 很多CLASS的话, 就很可能出现Perm Gen space错误,
这种错误常见在web 服务器对JSP进行p re compile的时候 。如果你的WEB APP下都用了大量的 第三方jar, 其大小
超过了jvm默认的大 小(4M)那么就会产 生此错误信息了。
解决方法: 手动设置MaxPer mSize大小
修改TOMCAT_H OME/bin/ca talina.sh
在“echo "Using CATALINA_B ASE: $CATALINA_ BASE"”上面加入 以下行:
JAVA_OPTS= "-server -XX:PermSi ze=64M -XX:MaxPer mSize=128m
建议:将相同的第三方 jar文件移置到to mcat/share d/lib目录下,这 样可以达到减少jar 文档重复占用内存的目 的。
二、java.lan g.OutOfMem oryError: Java heap space
Heap size 设置
JVM堆的设置是指j ava程序运行过程中 JVM可以调配使用的 内存空间的设置.JV M在启动的时候会自动 设置Heap size的值,
其初始空间(即-Xm s)是物理内存的1/ 64,最大空间(-X mx)是物理内存的1 /4。可以利用JVM 提供的-Xmn -Xms -Xmx等选项可
进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
提示:在JVM中如果 98%的时间是用于G C且可用的Heap size 不足2%的时候将抛出 此异常信息。
提示:Heap Size 最大不要超过可用物理 内存的80%,一般的 要将-Xms和-Xm x选项设置为相同,而 -Xmn为1/4的- Xmx值。
解决方法:手动设置H eap size
修改TOMCAT_H OME/bin/ca talina.sh
在“echo "Using CATALINA_B ASE: $CATALINA_ BASE"”上面加入 以下行:
JAVA_OPTS= "-server -Xms800m -Xmx800m -XX:MaxNew Size=256m"
三、实例,以下给出1 G内存环境下java jvm 的参数设置参考:
JAVA_OPTS= "-server -Xms800m -Xmx800m -XX:PermSi ze=64M -XX:MaxNew Size=256m -XX:MaxPer mSize=128m -Djava.awt .headless= true "
很大的web工程,用 tomcat默认分配 的内存空间无法启动, 如果不是在myecl ipse中启动tom cat可以对tomc at这样设置:
TOMCAT_HOM E\bin\cata lina.bat 中添加这样一句话:
set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPer mSize=256m
如果要在myecli pse中启动,上述的 修改就不起作用了,可 如下设置:
Myeclipse- >preferenc es->myecli pse->serve rs->tomcat ->tom cat×.×->JD K面板中的
Optional Java VM arguments中 添加:-Xmx102 4M -Xms512M -XX:MaxPer mSize=256m 海柳 烟嘴 正品
在myeclipse 中启动Tomcat时 ,提示"ava.la ng.OutOfMe moryError: Java heap space",解决办 法就是:
Myeclipse- >preferenc es->myecli pse->serve rs->tomcat ->tom cat×.×->JD K面板中的
Optional Java VM arguments中 添加:-Xmx102 4M -Xms512M -XX:MaxPer mSize=256m
//以上是转载
我遇到的错误是在my eclipse中启动 Tomcat时,提示 "ava.lang. OutOfMemor yError: Java heap space"
以上三点我都试过了 就是不知道自己的代码 从哪里进入死循环 我运用的是strut s,hibernat e,spring
根据错误提示JSON Write 找到自己项目下poj o下hibernat e的映射文件
eg:
有两张关联的表 生成两个相联的实体类 和映射文件 PersonInfo mation和Sta teOffice
因为映射文件和实体类 是从数据库表自动生成 的 所以都是自动生成双向 的关系
在PersonInf omation中pr ivate PersStateO ffice persStateO ffice;
并且在StateOf fice中priva te Set<PersPe rsonInform ation> persPerson Informatio ns = new HashSet<Pe rsPersonIn formation> (
0);
所以在封装json数 据的时候就会出现死循 环现象 不断的从两个实体类中 封装 导致内存溢出
解决方案 1 取消StateOff ice中的关联 2手动封装json数 据(为了不让查询数据 出现错误与冲突 我选择手动封装jso n数据)
eg://获取任职类 型
public String loadOffice Type() throws Exception {
PrintWrite r out = response.g etWriter() ;
typeOffice List=offic eTypeServi ce.getOffi ceType();
out.print( "{typeOffi ceList:[") ;
for(int i=0;i<type OfficeList .size();i+ +){
out.print( "{typeOffi ceId:'"+ty peOfficeLi st.get(i). getTypeOff iceId()+"' ,");
out.print( "typeOffic e:'"+typeO fficeList. get(i).get TypeOffice ()+"'}");
if(i!=type OfficeList .size()-1) {
out.print( ",");
}
}
out.print( "]}");
return null;
}
关于java.lang.OutOfMemoryError:java heap space错误解决方案相关推荐
- java.lang.OutOfMemoryError: Java heap space错误及...
为什么80%的码农都做不了架构师?>>> 以下是从网上找到的关于堆空间溢出的错误解决办法: java.lang.OutOfMemoryError: Java heap spac ...
- (转)java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
java.lang.OutOfMemoryError: Java heap space =================================================== 使用Ja ...
- Eclipse 报 “Exception in thread main java.lang.OutOfMemoryError: Java heap space ”错误的解决办法
Eclipse 报 "Exception in thread "main" java.lang.OutOfMemoryError: Java heap space &qu ...
- Eclipse 报 “Exception in thread main java.lang.OutOfMemoryError: Java heap space ”错误的解决办法...
Eclipse 报 "Exception in thread "main" java.lang.OutOfMemoryError: Java heap space &qu ...
- java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
下面是从网上找到的关于堆空间溢出的错误解决的方法: java.lang.OutOfMemoryError: Java heap space ============================== ...
- java.lang.OutOfMemoryError: Java heap space 错误及解决办法
java.lang.OutOfMemoryError: Java heap space =================================================== 使用Ja ...
- eclipse中java.lang.OutOfMemoryError: Java heap space错误
Myeclipse中报java.lang.OutOfMemoryError: Java heap space错误 解决办法: 选中被运行的类,点击菜单'run->run Configuratio ...
- java.lang.OutOfMemoryError: Java heap space错误和方法(集、转)
错误的方式来解决溢出下面的堆空间是从网上找: java.lang.OutOfMemoryError: Java heap space ================================= ...
- opatch java.lang.OutOfMemoryError:Java heap space错误一例
一套11.1.0.6的RAC系统在在使用opatch工具时出现了OutOfMemoryError: Java heap space错误,其错误日志如下: opatch lsinventory Invo ...
- caused by: java.lang.outofmemory_hadoop运行java.lang.OutOfMemoryError:java heap space错误。
在map任务中,导入了99M的文件,运行时出现下面的问题: java.lang.RuntimeException:java.lang.reflect.InvocationTargetException ...
最新文章
- 推荐系统中常用算法 以及优点缺点对比
- java优先队列PriorityQueue修改队列内元素排序问题
- Html5相关文章链接
- 稳定和高质量是最好的选择
- MongoDB 查询时间差问题修复
- Hadoop源码分析21:namenode概要
- Vue todos代办事项功能
- 用python自动制作ppt——第三讲——插入文本框
- html清除图层,ps按delete不能删除图层怎么办?
- 金蝶K3序时簿页面增加物料即时库存显示功能
- 编程中的数学——编程遇见数学,让数学更有趣!
- 我也说说《变形金刚》2
- 三种算法求解最大公约数和最小公倍数
- JavaScript中原生Array数组方法详解
- Pandas 02-基础
- 从博士生论文选题看威客理论研究最新进展
- 第一章【Oracle自动化部署脚本】诞生
- 【OpenCV 笔记】编译Opencv contrib模块
- 用Python分析完6000 款 App,得出这些结论
- C标签和s标签的对比,特别是里面的if判断条件的写法