日期:2014-05-20  浏览次数:20896 次

java堆栈溢出java.lang.OutOfMemoryError: Java heap space
我从oracle里面取数据然后生成excel,但是出现如下异常:java.lang.OutOfMemoryError: Java heap space
我按照网上一些文章说把我自己的参数设成这样JAVA_OPTS=-Xms512m -Xmx700m -Xmn175m,但还是报错 ,疯了。

我的机器配置是cpu 双核1.79GHz,内存1G。

请高手指点一下!

------解决方案--------------------
虽然我不知道你是怎么取的,但是我建议你debug一下,看看这个取的过程中是不是因为有递归才导致了这个Exception,设置参数这个解决方法我认为不是最好的。
------解决方案--------------------
内存用完了,检查程序吧,有可能有死循环
------解决方案--------------------
原因:
使用Java程序从数据库中查询大量的数据时出现异常:
java.lang.OutOfMemoryError: Java heap space 
在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。
解决办法:
tomcat_home/bin下catalina.bat(win)或catalina.sh(linux)执行代码前加上:
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m
------解决方案--------------------
同意!
探讨
原因:
使用Java程序从数据库中查询大量的数据时出现异常:
java.lang.OutOfMemoryError: Java heap space
在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进…

------解决方案--------------------
估计是出现了死循环或者是递归没写对,还有数据量大也有可能,这些都碰到过,仔细检查下你的程序
------解决方案--------------------
用的eclipse么?如果是的话,请在window/preferences/java/installed JREs/edit(你正在使用的jdk)/Default VM Arguments那栏中
输入-Xms128m -Xmx384m即可。
前面是指定最小的内存,后面是指定最大内存。具体根据需求调整。
绝对好使~
------解决方案--------------------
我是做文件下载时也出现过这样的错误,后来用分段下载,一次下载一部分解决了。所以我觉得如果数据量实在大而且程序没什么问题的话,可以考虑换其他的方式去实现
------解决方案--------------------
我怀疑是你某个String对象长度过多了,或者对某个String对象赋值极其频繁,通常内存溢出异常会出现在字符串过长或频繁赋值的原因下,你可以把你程序里引用超长字符的对象改为StringBuffer,让它有缓存空间.

以上只是怀疑原因之一,你可以试着改动调试,另外,频繁使用网络资源(比如URL对象等)也会出现内存溢出,解决办法是将其线程化,休眠时间加长!