resin内存溢出 java.lang.OutOfMemoryError: PermGen space

来源:互联网 发布:淘宝装修在线生成 编辑:程序博客网 时间:2024/04/30 08:05

Resin,内存溢出 最近由于resin主机经常报如下错误:


500 Servlet Exception
java.lang.OutOfMemoryError: PermGen space

一旦报这个错,网站再也无法访问,即导致Resin死机.

其实这种现象在Java语言中很正常,我们通常称之为Java内存溢出。由于我们在Java程序中声明了好多对象,占用了内存空间,程序结束时没有将这些对象或对象的引用进行释放,从而导致Java虚拟机(JVM)进行垃圾回收(GC)时,不能够回收这些对象。这样,Java所用的内存就会一直增加,直至溢出,进而导致Resin死机。 
原因有二:一是程序不足够健壮;二是Resin设置的虚拟内存太小。

经过分析,程序使用了大量的动态生成类的方法,即用:

Class.forName(name).newInstance()

的方法来生成类,于是,没有办法,只能改为传统方式。同时,在服务接入口增加手工垃圾清理:Runtime.getRuntime().gc()

修改完成上传后,现象有所改观,但是,多人访问时,还是出现了主述错误。只好采取第二步,要求主机商修改Resin的虚拟内存。





linux
下设置方式:



linux
下的话   resincontribinit.resin   
    
  #   
  #   Sets   the   commandline   arguments.   
  #   
  ARGS="-java_home   $JAVA_HOME   -resin_home   $RESIN_HOME   -server   -Xms256m   -Xmx1024m   -XX:MaxPermSize=128m"