2.tomcat:java.lang.OutOfMemoryError: Java heap space
3.weblogic:Root cause of ServletException java.lang.OutOfMemoryError
4.resin:java.lang.OutOfMemoryError
5.java:java.lang.OutOfMemoryError
缘故原由: 常见的有以下几种:
1.内存中加载的数据量过于弘大,如一次从数据库取出过多数据;
2.凑集类中有对工具的引用,利用完后未清空,使得JVM不能回收;
3.代码中存在去世循环或循环产生过多重复的工具实体;
4.利用的第三方软件中的BUG;
5.启动参数内存值设定的过小;
办理:
1.运用做事器提示缺点的办理: 把启动参数内存值设置足够大。
2.Java代码导致缺点的办理: 重点排查以下几点:
1)检讨代码中是否有去世循环或递归调用。
2)检讨是否有大循环重复产生新工具实体。
3)检讨对数据库查询中,是否有一次得到全部数据的查询。一样平常来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较暗藏,在上线前,数据库中数据较少,不随意马虎出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对付数据库查询只管即便采取分页的办法查询。
4 )检讨List、MAP等凑集工具是否有利用完后,未打消的问题。List、MAP等凑集工具会始终存有对工具的引用,使得这些工具不能被GC回收。
案例:1.hibernate查询数据时,一次查询过多的数据,后来调度了该部分的代码,每次只取出指定量的数据,成功的办理该问题。
2.在做压力测试时,涌现OutOfMemoryError,创造session的资源一贯没有被开释产生的,最好通过session的invalidate()方法将session的资源开释。
3.程序中涌现去世循环。
4.tomcat支配、运行涌现OutOfMemoryError,加大内存参数值,办理此问题。
tomcat中java.lang.OutOfMemoryError: Java heap space非常处理一、Heap size JVM堆的设置是指java程序运行过程中JVM可以调配利用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值, 其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM供应的-Xmn -Xms -Xmx等选项可 进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。 提示:在JVM中如果98%的韶光是用于GC且可用的Heap size 不敷2%的时候将抛出此非常信息。 提示:Heap Size 最大不要超过可用物理内存的80%,一样平常的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
二、办理方法:手动设置Heap size 修正TOMCAT_HOME/bin/catalina.sh 在“echo \"大众Using CATALINA_BASE: $CATALINA_BASE\"大众”上面加入以下行: JAVA_OPTS=\"大众-server -Xms800m -Xmx800m -XX:MaxNewSize=256m\公众
tomcat中java.lang.OutOfMemoryError: PermGen space非常处理一、PermGen space PermGen space的全称是Permanent Generation space,
是指内存的永久保存区域, 这块内存紧张是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,以是如果你的运用中有很多CLASS的话,就很可能涌现PermGen space缺点, 这种缺点常见在web做事器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小 超过了jvm默认的大小(4M)那么就会产生此缺点信息了。
办理方法: 手动设置MaxPermSize大小 修正TOMCAT_HOME/bin/catalina.sh 在“echo \"大众Using CATALINA_BASE: $CATALINA_BASE\"大众”上面加入以下行: JAVA_OPTS=\"大众-server -XX:PermSize=64M -XX:MaxPermSize=128m 建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。
weblogic中java.lang.OutOfMemoryError非常处理缺点提示: \公众Root cause of ervletException java.lang.OutOfMemoryError\"大众
办理办法: 调度bea/weblogic/common中CommEnv中参数 :sun if \公众%PRODUCTION_MODE%\公众 == \公众true\"大众 goto sun_prod_mode set JAVA_VM=-client set MEM_ARGS=-Xms256m -Xmx512m -XX:MaxPermSize=256m set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none goto continue :sun_prod_mode set JAVA_VM=-server set MEM_ARGS=-Xms256m -Xmx512m -XX:MaxPermSize=256m goto continue
Eclipse运行Jboss时java.lang.OutOfMemoryError:PermGen space非常处理
在Eclipse中运行Jboss时,韶光太长可能有时候会涌现java.lang.OutOfMemoryError:PermGen space的缺点,这里给先容大家一种办理方法:
1)点击debug图标阁下的小箭头;
2)点击”Debug Configurations…”菜单项;
3)选左边的“Generic Server”树下面的“JBoss v4.2 at localhost”;
4)点击右边的“Arguments”Tab页签,在“VM arguments”中添加:
-Dprogram.name=run.bat -Djava.endorsed.dirs=\"大众D:/JBoss405/bin/../lib/endorsed\"大众 -Xms128m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=256m
这里要把稳你的系统是32位还是64位的,针对性给就行。
5)如果你因此命令行模式或者直接点击“run.bat”来运行JBoss,那你就要在 bin/run.conf 文件中对JVM选项作修正了,找到 JAVA_OPTS=\"大众-Xms128m -Xmx512m…” 这一段,然后在后面加上 “ -XX:PermSize=64m -XX:MaxPermSize=256m”。保存就OK了。
6)把稳:个中128、512、64和256等数字可以根据自己机器的配置来做一些相应的调度,然后点击“Apply”就可以了。
Resin下java.lang.OutOfMemoryError非常处理缘故原由: 涌现这个缺点,一样平常是由于JVM物理内存过小。默认的Java虚拟机最大内存仅为64兆,这在开拓调试过程中可能没有问题,但在实际的运用环境中是远远不能知足须要的,除非你的运用非常小,也没什么访问量。否则你可能会创造程序运行一段韶光后包java.lang.OutOfMemoryError的缺点。因此我们须要提升resin可用的虚拟机内存的大小。
办理: 修正/usr/local/resin/bin/httpd.sh中的args选项
添加参数-Xms(初始内存)和-Xmx(最大能够利用内存大小)
可以用来限定JVM的物理内存利用量。 例如: args=\公众-Xms128m -Xmx256m\"大众 设置后,JVM初始物理内存是128m,最大能利用物理内存为256m。 这两个值该当由系统管理员根据做事器的实际情形进行设置。
有哪方面想看的技能文章可以不才方留言哦~