几种outofmemory的解决方法

几种outofmemory的解决方法:

1.  java.lang.OutOfMemoryError: PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space。从文字上看就是内存溢出,解决方法是加大内存。为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen
space错误。这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小那么就会产生此错误信息了。

修改TOMCAT_HOME/bin/catalina.sh

在“echo "Using CATALINA_BASE:    $CATALINA_BASE"”上面加入以下行:

JAVA_OPTS="-server -XX:PermSize=128M -XX:MaxPermSize=128m

如果是在eclipse中启动,可以设置:

   2.  java.lang.OutOfMemoryError: Java heap space

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%的时候将抛出此异常信息。

在“echo "Using CATALINA_BASE:    $CATALINA_BASE"”上面加入以下行:

JAVA_OPTS="-server -Xms800m -Xmx800m    -XX:MaxNewSize=256m"

jvm新生代、永久代的模型可参考 http://blog.csdn.net/kingofworld/article/details/17718587

JVM参数:

-XX:+PrintGCDetails  打印垃圾回收信息

-Xms 为Heap区域的初始值,线上环境需要与-Xmx设置为一致,否则capacity的值会来回飘动

-Xmx 为Heap区域的最大值

-Xss(或-ss) 线程栈大小(指一个线程的native空间)1.5以后是1M的默认大小

-XX:PermSize与-XX:MaxPermSize  方法区(永久代)的初始大小和最大值(但不是本地方法区)

-XX:NewRatio  老年代与新生代比率

-XX:SurvivorRatio  Eden与Survivor的占用比例。例如8表示,一个survivor区占用 1/8 的Eden内存,即1/10的新生代内存,为什么不是1/9?因为我们的新生代有2个survivor,即S1和S22。所以survivor总共是占用新生代内存的 2/10,Eden与新生代的占比则为 8/10。

-XX:MaxHeapFreeRatio  GC后,如果发现空闲堆内存占到整个预估的比例小于这个值,则减小堆空间。

-XX:MinHeapFreeRatio  GC后,如果发现空闲堆内存占到整个预估的比例大于这个值,则增大堆空间。

-XX:NewSize    新生代大小

时间: 2024-08-24 03:59:56

几种outofmemory的解决方法的相关文章

Ubuntu几种常见乱码解决方法

一.网页中的flash乱码:        ubuntu默认浏览器是Firefox,但是Ubuntu默认不安装像flash这种带版权的软件,所以当你浏览像youku或网页播放器时,这种带有 flash的网页,firefox会提示你安装缺失插件,选择安装Flash插件后确实是可以显示flash了,不过你会发现,在flash上面的中文都是方框!注意:建议选择adobe的插件,这是由于兼容性.    解决方法:    终端中输入:    cd /etc/fonts/conf.d/    sudo cp

Win10专业版桌面没有图标的三种情况及解决方法

正常情况,用户进入Win10系统桌面的时候会看到administrator文件夹.计算机.回收站.网络等图标,但有朋友进入桌面后什么图标都没有,这是怎么回事,Win10桌面没有图标可以分为三种情况,下面我们来看下这三种情况的具体解决方法. 一.系统图标消失 桌面右键进入个性化窗口,在主题选项找到桌面图标设置,在桌面图标设置中找到你想要显示的系统图标. 二.全部图标消失 这个时候很有可能是网上赌博桌面图标被隐藏起来了,鼠标右键进入查看选项后勾选,显示桌面图标. 三.桌面图标和任务栏一起消失 1.应

Spring学习总结(14)——Spring10种常见异常解决方法

在程序员生涯当中,提到最多的应该就是SSH三大框架了.作为第一大框架的Spring框架,我们经常使用. 然而在使用过程中,遇到过很多的常见异常,我在这里总结一下,大家共勉. 一.找不到配置文件的异常 [plain] view plaincopy org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [com/

Spring10种常见异常解决方法

在程序员生涯当中,提到最多的应该就是SSH三大框架了.作为第一大框架的Spring框架,我们经常使用. 然而在使用过程中,遇到过很多的常见异常,我在这里总结一下,大家共勉. 一.找不到配置文件的异常 [plain] view plaincopy org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [com/

Command "python setup.py egg_info" failed with error code 1一种问题的解决方法

问题描述:无论是你在pycharm中直接使用import and install命令,还是pip的时候出现了Command "python setup.py egg_info" failed with error code 1这样的问题描述,需要考虑可能pip的这个源里面没有对应的python3.5的模块 解决方法:通常可以直接google "XXX for python3.5",或者在github中找到对应的python3.5的项目,将对应的.py文件添加到pyt

网站打不开的6种现象及解决方法

★出现Bad Request(Invalid Hostname) 原因:2003系统的虚拟主机IIS处于停止状态的时候会有这种提示,检查后台主机状态,一般这种情况主机状态显示为“暂停中”或者“管理员停止”,如果主机状态处于“运行中”,一般是绑定了不规则的域名导致IIS停止. ★ 出现No web site is configured at this address 原因:2000系统的虚拟主机IIS处于停止状态的时候会有这种提示,检查后台主机状态. ★ 出现Directory Listing D

error C4430: 缺少类型说明符 - 假定为 int....的一种情况的解决方法

这段时间用VS2013写代码的时候,一不小心就出现了这个提示,这个问题困扰了我一段时间,不过总算解决了,这里记录一下! 我这里先描述本人碰到的问题: 正如上图所见,一段在我们眼里看起来没有任何错误的代码,居然爆出了4430的错误,先不急,我们先看一看DlgAddAccount.h文件中包含的头文件: 再看一看AddAccountInfoDlg.h中包含的头文件: 我们发现一件很有趣的事情,两个文件互相包含,这样的话,我们将AddAccountInfo.h中的#include "DlgAddAcc

window7系统PID=4占用80端口的几种情况及解决方法

首先,我们要看怎么80端口是否被占用: 点击电脑左下角的 输入cmd , 回车,然后输入netstat -ano|findstr "80"  然后回车(注意,-ano后面是一个竖杠,也就是我们键盘上enter键上面那个键,按住shift再按那个键就会出现那个竖杠|,还有,双引号是英文字符的) TCP那一列后面的第一列中,有:80就是占用80端口的进程,最后那么他的PID就是最后一列的2632. 现在我们来看一下这个PID=2632的是哪个进程,在cmd中输入tasklist |find

启动elasticsearch报错的几种原因及解决方法

ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 解决: 在宿主机执行: sysctl -w vm.max_map_count=262144 原因: vm.max_map_count参数,是允许一个进程在VMAs拥有最大数量(VMA:虚拟内存地址, 一个连续的虚拟地址空间),当进程占用