在使用MyEclipse 的过程中经常出现内存不足的提示:
提示中“MyEclipse has detected that less than 5% of the 472MB of Tebured Gen(Heap memory) space remains”,意思是 当前只有不到5%的堆内存是可使用的
解决办法:
打开 Eclipse 目录,找到 Eclipse.ini 配置文件
打开可以看到如下配置信息:
-vmargs
-Xms128m
-Xmx512m
-Duser.language=en
-XX:PermSize=128M
-XX:MaxPermSize=256M
修改如下:
-vmargs
-Xms512m //配置堆内存的最小值
-Xmx512m //配置堆内存的最大值
-XX:PermSize=128M // 配置非堆内存的最小值
-XX:MaxPermSize=256M //配置非堆内容的最大值
说明:
Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配,堆是在Java虚拟机启动时创建的,在Java堆之外的内存称为非堆内存。
堆内存的分配:
JVM 初始分配的内存由-Xms 指定,默认是物理内存的1/64 :JVM最大分配的内存由-Xms指定,默认是物理内存的1/4。默认空余堆内存小于 40%时,JVM会增大直到-Xmx的最大限制,空余堆内存大于70% 时,JVM会减少直到-Xms的最小限制,因此,服务器一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小
非堆内存的分配:
JVM 使用-XX:PermSize 设置非堆内存初始值,默认是物理内存的1/64 ,由 XX:MaxPermSize 设置最大非堆内存的大小,默认是物理内存的1/4