`
刘小小尘
  • 浏览: 67504 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于java.lang.OutOfMemoryError:java heap space错误解决方案

 
阅读更多
//首先检查程序有没
<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-&gt;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>&gt;preferenc<wbr>es-&gt;myecli<wbr>pse-&gt;serve<wbr>rs-&gt;tomcat<wbr>-&gt;tomcat×.×-&gt;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>&gt;preferenc<wbr>es-&gt;myecli<wbr>pse-&gt;serve<wbr>rs-&gt;tomcat<wbr>-&gt;tomcat×.×-&gt;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&lt;PersPe<wbr>rsonInform<wbr>ation&gt;persPerson<wbr>Informatio<wbr>ns=newHashSet&lt;Pe<wbr>rsPersonIn<wbr>formation&gt;<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&lt;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错误处理:java.lang.OutOfMemoryError: Java heap space”** - 描述提到了对这个问题的相关资料进行整理,这意味着该文档将提供如何识别、分析并解决此类问题的方法。 #### 详细解析 ...

    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.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...

    java解决nested exception is 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.lang.OutOfMemoryError Java heap space异常 #### 一、问题概述 在进行Java项目编译的过程中,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这种异常。这类异常通常表明Java虚拟机...

    java.lang.OutOfMemoryError解决办法

    当应用程序加载大量类或者使用了大量的静态变量和常量时,PermGen space可能会耗尽,从而引发`java.lang.OutOfMemoryError: PermGen space`错误。对于频繁部署或重载JSP的Web应用,如Tomcat,这个问题尤为常见。 ...

    记录java.lang.OutOfMemoryErrorJava heap space的情况.docx

    在Java程序中,`java.lang.OutOfMemoryError: Java heap space` 是一个常见的错误,意味着程序在运行过程中耗尽了JVM分配的堆内存。这个错误通常发生在创建大量对象或者单个对象占用过多内存时。 一、问题描述与...

    java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法

    ### Java.lang.OutOfMemoryError:Java Heap Space 错误及处理办法 在Java应用程序开发与维护过程中,经常会遇到`java.lang.OutOfMemoryError: Java heap space`这一异常情况。该异常通常表明Java虚拟机(JVM)的堆...

    java.lang.OutOfMemoryError处理错误

    java.lang.OutOfMemoryError处理错误 java.lang.OutOfMemoryError是Java虚拟机(JVM)中的一种常见错误,...java.lang.OutOfMemoryError是Java虚拟机中的一种常见错误,解决这种错误需要根据实际情况进行分析和解决。

    java.lang.OutOfMemoryError 解决方法

    java.lang.OutOfMemoryError: Java heap space 解决方法

    Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException)

    "java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError" 是一个典型的错误提示,它表明在并发执行过程中遇到了内存不足的问题。下面我们将深入探讨这个问题的原因、影响以及如何解决。 内存溢出...

    Eclipse中通过Tomcat运行J2EE项目java.lang.OutOfMemoryError PermGen space的解决方案

    Eclipse 中通过 Tomcat 运行 J2EE 项目 java.lang.OutOfMemoryError PermGen space 的解决方案 在 Eclipse 中通过 Tomcat 运行 J2EE 项目时,可能会出现 java.lang.OutOfMemoryError: PermGen space 异常,这是由于...

    Tomcat给我的java.lang.OutOfMemoryError: PermGen

    本文将针对两种常见的Java内存溢出错误——`java.lang.OutOfMemoryError: PermGen space`和`java.lang.OutOfMemoryError: Java heap space`进行详细的分析和解决方案的探讨。 首先,我们来看`java.lang....

    完美解决java.lang.OutOfMemoryError处理错误的问题

    Java中的`java.lang.OutOfMemoryError`是一种常见的运行时错误,通常表示应用程序在尝试分配新的内存对象时,Java虚拟机(JVM)无法找到足够的连续内存空间来完成操作。这个错误可能由多种原因引起,主要分为堆内存...

    OutOfMemoryError_8种典型案例分享

    java.lang.OutOfMemoryError是Java开发者在工作中经常会遇到的一个内存错误。该错误通常发生在JVM无法为新对象分配足够的堆内存时。由于内存问题导致的程序崩溃给开发和维护带来了极大的挑战,而解决这类问题需要对...

    java.lang.OutOfMemoryError: PermGen space

    在Java编程中,我们常常会遇到一个让人头疼的问题,那就是“java.lang.OutOfMemoryError: PermGen space”错误。这个错误提示表明,应用程序在运行过程中,内存的永久代(Permanent Generation)空间不足,导致了...

    内存不足OOM java.lang.OutOfMemoryError.

    Java中的“内存不足OOM (Out Of Memory):java.lang.OutOfMemoryError”是一个常见的运行时错误,它表示Java虚拟机(JVM)在尝试分配新的对象或数据结构时,发现系统内存不足以完成此操作。这个问题通常发生在程序...

    解决Java_heap_space问题

    当程序创建的对象过多或单个对象占用内存过大时,如果没有足够的空闲内存来分配新对象,JVM就会抛出“OutOfMemoryError: Java heap space”错误。这可能是由于以下原因造成的: 1. **初始堆大小设置不当**:默认...

Global site tag (gtag.js) - Google Analytics