现在的位置: 首页 > 综合 > 正文

heap space 和 permgen space 溢出的简单解决方法和原理笔记

2013年04月28日 ⁄ 综合 ⁄ 共 582字 ⁄ 字号 评论关闭

1
. PermGen
 space
全称是Permanent Generation space,是指内存的永久保存区域. 
用于存放,Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域.所以当我们的应用服务器在启动的时候会加载很多的CLASS的时候会出现OutOfMemoryError: PermGen spac的错误.
解决方法自然也就是要加大应用服务器在jvm启动时候所需要初始化的perGen space的size 了,一般是在应用服务器的启动参数的jvm配置
中加入
:
  -XX:MaxNewSize=256m -XX:MaxPermSize=256m 

2. Heap space 
Heap psace与permGen区域存放的东西不同,主要是存放java运行时产生的对象,他们是GC(Garbage
Collection)在运行期间会定时进行清理的.所以当在JVM中如果98%的时间是用于GC且可用的
Heap size
不足2%的时候将抛出"java.lang.OutOfMemoryError: Java 
heap space "的错误.原因是对象的产生上限以达到jvm的上限
. 解决办法自然是设置更大的jvm的heap space size:

这就是为什么我们要在应用服务器的jvm启动参数上加上 -Xms256m -Xmx256m  参数的原因.

抱歉!评论已关闭.