Oops: OutOfMemoryError
An unexpected error occured caused by exception OutOfMemoryError: PermGen space
play框架,动态编译scala(scala会在下一章介绍),导致JVM内存的永久保存区域装不下,内存外溢,此错误来自JVM不是Throwable的,无法用try...catch捕捉。。
项目是apache+mysql+eclipse,刚刚开始,以为是服务器的问题,在apache鼓捣半天,最后无语的是修改如此easy。
下面是解决方法:
一、修改eclipse.ini文件,修改如下:
-Xms128m -Xmx512m不对?加大参数。
的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
这是因为JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因:
1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。
二、如还是不行,就在eclipse中去设置,步骤:window-Prefereces-java-Installed JREs-edit,设置VM Arguments为-XX:PermSize=128m -XX:MaxPermSize=256m,参数大小依据实际需求而定