//首先检查程序有没
<wbr>有限入死循环<br><br>
这个问题主要还是由这<wbr>个问题java.lang.<wbr>OutOfMemor<wbr>yError:Javaheapspace引起的。第一次出现这<wbr>样的的问题以后,引发<wbr>了其他的问题。在网上<wbr>一查可能是JAVA的<wbr>堆栈设置太小的原因。<wbr><br><br>
跟据网上的答案大致有<wbr>这两种解决方法:<br><br>
1、设置环境变量<br><br>
解决方法:手动设置H<wbr>eapsize<br><br>
修改TOMCAT_H<wbr>OME/bin/ca<wbr>talina.sh<br><br>
setJAVA_OPTS=<wbr>-Xms32m-Xmx512m<br><br>
可以根据自己机器的内<wbr>存进行更改。<br><br>
2、java-Xms32m-Xmx800mclassName<br><br>
就是在执行JAVA类<wbr>文件时加上这个参数,<wbr>其中classNam<wbr>e是需要执行的确类名<wbr>。(包括包名)<br><br>
这个解决问题了。而且<wbr>执行的速度比没有设置<wbr>的时候快很多。<br><br>
如果在测试的时候可能<wbr>会用Eclispe这时候就需要在Ecl<wbr>ipse->run-arguments<wbr>中的VMarguments中输入-Xms32m<wbr>-Xmx800m这个<wbr>参数就可以了。<br><br>
后来在Eclilps<wbr>e中修改了启动参数,<wbr>在VMarguments加入了-Xms32m<wbr>-Xmx800m,问<wbr>题解决。<br><br>
一、java.lan<wbr>g.OutOfMem<wbr>oryError:PermGenspace<br><br>
PermGenspace的全称是P<wbr>ermanentGeneration<wbr>space,是指内存<wbr>的永久保存区域,<br><br>
这块内存主要是被JV<wbr>M存放Class和M<wbr>eta信息的,Cla<wbr>ss在被Loader<wbr>时就会被放到Perm<wbr>Genspace中,<br><br>
它和存放类实例(In<wbr>stance)的He<wbr>ap区域不同,GC(<wbr>GarbageCollection<wbr>)不会在主程序运行期<wbr>对<br><br>
PermGenspace进行清理,<wbr>所以如果你的应用中有<wbr>很多CLASS的话,<wbr>就很可能出现Perm<wbr>Genspace错误,<br><br>
这种错误常见在web<wbr>服务器对JSP进行p<wbr>recompile的时候<wbr>。如果你的WEBAPP下都用了大量的<wbr>第三方jar,其大小<br><br>
超过了jvm默认的大<wbr>小(4M)那么就会产<wbr>生此错误信息了。<br><br>
解决方法:手动设置MaxPer<wbr>mSize大小<br><br>
修改TOMCAT_H<wbr>OME/bin/ca<wbr>talina.sh<br><br>
在“echo"UsingCATALINA_B<wbr>ASE:$CATALINA_<wbr>BASE"”上面加入<wbr>以下行:<br><br>
JAVA_OPTS=<wbr>"-server-XX:PermSi<wbr>ze=64M-XX:MaxPer<wbr>mSize=128m<wbr><br><br>
建议:将相同的第三方<wbr>jar文件移置到to<wbr>mcat/share<wbr>d/lib目录下,这<wbr>样可以达到减少jar<wbr>文档重复占用内存的目<wbr>的。<br><br>
二、java.lan<wbr>g.OutOfMem<wbr>oryError:Javaheapspace<br><br>
Heapsize设置<br><br>
JVM堆的设置是指j<wbr>ava程序运行过程中<wbr>JVM可以调配使用的<wbr>内存空间的设置.JV<wbr>M在启动的时候会自动<wbr>设置Heapsize的值,<br><br>
其初始空间(即-Xm<wbr>s)是物理内存的1/<wbr>64,最大空间(-X<wbr>mx)是物理内存的1<wbr>/4。可以利用JVM<wbr>提供的-Xmn-Xms-Xmx等选项可<br><br>
进行设置。Heapsize的大小是YoungGeneration<wbr>和TenuredGeneraion之和。<br><br>
提示:在JVM中如果<wbr>98%的时间是用于G<wbr>C且可用的Heapsize不足2%的时候将抛出<wbr>此异常信息。<br><br>
提示:HeapSize最大不要超过可用物理<wbr>内存的80%,一般的<wbr>要将-Xms和-Xm<wbr>x选项设置为相同,而<wbr>-Xmn为1/4的-<wbr>Xmx值。<br><br>
解决方法:手动设置H<wbr>eapsize<br><br>
修改TOMCAT_H<wbr>OME/bin/ca<wbr>talina.sh<br><br>
在“echo"UsingCATALINA_B<wbr>ASE:$CATALINA_<wbr>BASE"”上面加入<wbr>以下行:<br><br>
JAVA_OPTS=<wbr>"-server-Xms800m-Xmx800m-XX:MaxNew<wbr>Size=256m"<wbr><br><br>
三、实例,以下给出1<wbr>G内存环境下java<wbr>jvm的参数设置参考:<br><br>
JAVA_OPTS=<wbr>"-server-Xms800m-Xmx800m-XX:PermSi<wbr>ze=64M-XX:MaxNew<wbr>Size=256m-XX:MaxPer<wbr>mSize=128m<wbr>-Djava.awt<wbr>.headless=<wbr>true"<br><br>
很大的web工程,用<wbr>tomcat默认分配<wbr>的内存空间无法启动,<wbr>如果不是在myecl<wbr>ipse中启动tom<wbr>cat可以对tomc<wbr>at这样设置:<br><br>
TOMCAT_HOM<wbr>E\bin\cata<wbr>lina.bat中添加这样一句话:<br><br>
setJAVA_OPTS=<wbr>-Xmx1024M-Xms512M-XX:MaxPer<wbr>mSize=256m<wbr><br><br>
如果要在myecli<wbr>pse中启动,上述的<wbr>修改就不起作用了,可<wbr>如下设置:<br><br>
Myeclipse-<wbr>>preferenc<wbr>es->myecli<wbr>pse->serve<wbr>rs->tomcat<wbr>->tomcat×.×->JD<wbr>K面板中的<br><br>
OptionalJavaVMarguments中<wbr>添加:-Xmx102<wbr>4M-Xms512M-XX:MaxPer<wbr>mSize=256m<wbr><a target="_blank" href="http://www.ihaohuo.com/2010-12-18/3/25/hailiuyanzuizhengpin/index.html">海柳烟嘴正品</a><br><br>
在myeclipse<wbr>中启动Tomcat时<wbr>,提示"ava.la<wbr>ng.OutOfMe<wbr>moryError:<wbr>Javaheapspace",解决办<wbr>法就是:<br><br>
Myeclipse-<wbr>>preferenc<wbr>es->myecli<wbr>pse->serve<wbr>rs->tomcat<wbr>->tomcat×.×->JD<wbr>K面板中的<br><br>
OptionalJavaVMarguments中<wbr>添加:-Xmx102<wbr>4M-Xms512M-XX:MaxPer<wbr>mSize=256m<wbr><br><br>
//以上是转载<br><br>
我遇到的错误是在my<wbr>eclipse中启动<wbr>Tomcat时,提示<wbr>"ava.lang.<wbr>OutOfMemor<wbr>yError:Javaheapspace"<br><br>
以上三点我都试过了就是不知道自己的代码<wbr>从哪里进入死循环我运用的是strut<wbr>s,hibernat<wbr>e,spring<br><br>
根据错误提示JSON<wbr>Write找到自己项目下poj<wbr>o下hibernat<wbr>e的映射文件<br><br>
eg:<br><br>
有两张关联的表生成两个相联的实体类<wbr>和映射文件PersonInfo<wbr>mation和Sta<wbr>teOffice<br><br>
因为映射文件和实体类<wbr>是从数据库表自动生成<wbr>的所以都是自动生成双向<wbr>的关系<br><br>
在PersonInf<wbr>omation中pr<wbr>ivatePersStateO<wbr>fficepersStateO<wbr>ffice;<br><br>
并且在StateOf<wbr>fice中priva<wbr>teSet<PersPe<wbr>rsonInform<wbr>ation>persPerson<wbr>Informatio<wbr>ns=newHashSet<Pe<wbr>rsPersonIn<wbr>formation><wbr>(<br><br>
0);<br><br>
所以在封装json数<wbr>据的时候就会出现死循<wbr>环现象不断的从两个实体类中<wbr>封装导致内存溢出<br><br>
解决方案1取消StateOff<wbr>ice中的关联2手动封装json数<wbr>据(为了不让查询数据<wbr>出现错误与冲突我选择手动封装jso<wbr>n数据)<br><br>
eg://获取任职类<wbr>型<br><br>
publicStringloadOffice<wbr>Type()throwsException{<br><br>
PrintWrite<wbr>rout=response.g<wbr>etWriter()<wbr>;<br><br>
typeOffice<wbr>List=offic<wbr>eTypeServi<wbr>ce.getOffi<wbr>ceType();<br><br>
out.print(<wbr>"{typeOffi<wbr>ceList:[")<wbr>;<br><br>
for(inti=0;i<type<wbr>OfficeList<wbr>.size();i+<wbr>+){<br><br>
out.print(<wbr>"{typeOffi<wbr>ceId:'"+ty<wbr>peOfficeLi<wbr>st.get(i).<wbr>getTypeOff<wbr>iceId()+"'<wbr>,");<br><br>
out.print(<wbr>"typeOffic<wbr>e:'"+typeO<wbr>fficeList.<wbr>get(i).get<wbr>TypeOffice<wbr>()+"'}");<br><br>
if(i!=type<wbr>OfficeList<wbr>.size()-1)<wbr>{<br><br>
out.print(<wbr>",");<br><br>
}<br><br>
}<br><br>
out.print(<wbr>"]}");<br><br>
returnnull;<br><br>
} <br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
相关推荐
**描述:“搜集整理关于java错误处理:java.lang.OutOfMemoryError: Java heap space”** - 描述提到了对这个问题的相关资料进行整理,这意味着该文档将提供如何识别、分析并解决此类问题的方法。 #### 详细解析 ...
"Java.lang.OutOfMemoryError: Java heap space 解决方法" Java.lang.OutOfMemoryError: Java heap space 是 Java 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...
### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...
Java程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: Java heap space"是一个常见的问题,通常发生在程序试图分配超过堆内存限制的空间时。这个错误表明Java虚拟机(JVM...
### 编译时出现java.lang.OutOfMemoryError Java heap space异常 #### 一、问题概述 在进行Java项目编译的过程中,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这种异常。这类异常通常表明Java虚拟机...
当应用程序加载大量类或者使用了大量的静态变量和常量时,PermGen space可能会耗尽,从而引发`java.lang.OutOfMemoryError: PermGen space`错误。对于频繁部署或重载JSP的Web应用,如Tomcat,这个问题尤为常见。 ...
在Java程序中,`java.lang.OutOfMemoryError: Java heap space` 是一个常见的错误,意味着程序在运行过程中耗尽了JVM分配的堆内存。这个错误通常发生在创建大量对象或者单个对象占用过多内存时。 一、问题描述与...
### Java.lang.OutOfMemoryError:Java Heap Space 错误及处理办法 在Java应用程序开发与维护过程中,经常会遇到`java.lang.OutOfMemoryError: Java heap space`这一异常情况。该异常通常表明Java虚拟机(JVM)的堆...
java.lang.OutOfMemoryError处理错误 java.lang.OutOfMemoryError是Java虚拟机(JVM)中的一种常见错误,...java.lang.OutOfMemoryError是Java虚拟机中的一种常见错误,解决这种错误需要根据实际情况进行分析和解决。
java.lang.OutOfMemoryError: Java heap space 解决方法
"java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError" 是一个典型的错误提示,它表明在并发执行过程中遇到了内存不足的问题。下面我们将深入探讨这个问题的原因、影响以及如何解决。 内存溢出...
Eclipse 中通过 Tomcat 运行 J2EE 项目 java.lang.OutOfMemoryError PermGen space 的解决方案 在 Eclipse 中通过 Tomcat 运行 J2EE 项目时,可能会出现 java.lang.OutOfMemoryError: PermGen space 异常,这是由于...
本文将针对两种常见的Java内存溢出错误——`java.lang.OutOfMemoryError: PermGen space`和`java.lang.OutOfMemoryError: Java heap space`进行详细的分析和解决方案的探讨。 首先,我们来看`java.lang....
Java中的`java.lang.OutOfMemoryError`是一种常见的运行时错误,通常表示应用程序在尝试分配新的内存对象时,Java虚拟机(JVM)无法找到足够的连续内存空间来完成操作。这个错误可能由多种原因引起,主要分为堆内存...
java.lang.OutOfMemoryError是Java开发者在工作中经常会遇到的一个内存错误。该错误通常发生在JVM无法为新对象分配足够的堆内存时。由于内存问题导致的程序崩溃给开发和维护带来了极大的挑战,而解决这类问题需要对...
在Java编程中,我们常常会遇到一个让人头疼的问题,那就是“java.lang.OutOfMemoryError: PermGen space”错误。这个错误提示表明,应用程序在运行过程中,内存的永久代(Permanent Generation)空间不足,导致了...
Java中的“内存不足OOM (Out Of Memory):java.lang.OutOfMemoryError”是一个常见的运行时错误,它表示Java虚拟机(JVM)在尝试分配新的对象或数据结构时,发现系统内存不足以完成此操作。这个问题通常发生在程序...
当程序创建的对象过多或单个对象占用内存过大时,如果没有足够的空闲内存来分配新对象,JVM就会抛出“OutOfMemoryError: Java heap space”错误。这可能是由于以下原因造成的: 1. **初始堆大小设置不当**:默认...