分享

Eclipse内存溢出

 Jeln 2010-04-13
我的Eclipse由于内存溢出而自动退出。我的Eclipse配置文件:
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
-XX:MaxPermSize=256M
-XX:PermSize=256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m

我扩大了MaxPermSize到1024M:
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
-XX:MaxPermSize=1024M
-XX:PermSize=1024M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m

仍然报内存溢出的错误。好像修改的没有起作用。查了资料发现只有-vmargs下面的参数才会对JVM起作用。然后我在-vmargs下面设置MaxPermSize。
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
-XX:MaxPermSize=256M
-XX:PermSize=256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-XX:PermSize=128M
-XX:MaxPermSize=256M

现在Eclipse启动报错:‘JVM terminated. Exit code=-1’. 把-Xmx512m 改为-Xmx256m,
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
-XX:MaxPermSize=256M
-XX:PermSize=256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx256m
-XX:PermSize=128M
-XX:MaxPermSize=256M

Eclipse可以正常启动,也没有内存溢出的错误。我测试了一下,如果把-Xmx设置为444, 能正常启动,如果大于444,就起不起来了。

原因参考http://blog.csdn.net/liuzhenwen/archive/2008/12/21/3572727.aspx。

为什么有的机器将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?

JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因:

1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理 内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。






    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多