play框架,内存外溢

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,参数大小依据实际需求而定

你可能感兴趣的:(java,play,敏捷开发)