Eclipse内存限制

时间:2011-03-29 19:47:29

标签: eclipse

我使用的是32位WinXP,看不到升级,有没有办法限制Eclipse全天分配的内存量?我也在eclipse中以调试模式运行Weblogic 10服务器。几个小时后,我有一个700mb的STS.exe(eclipse)和400mb的java.exe(服务器)。至少有一种方法可以强制GC进行日蚀吗? 以下是我经常使用的设置,在我看来并没有被观察到。

-vm
C:\bea\jdk160_05\bin\javaw.exe
-showsplash
--launcher.XXMaxPermSize
128M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m -Xmx512m
-Dsun.lang.ClassLoader.allowArraySyntax=true
编辑:这是一个项目的怪物:Eclipse和Firefox 4。 enter image description here

5 个答案:

答案 0 :(得分:3)

  

有没有办法限制Eclipse全天分配的内存量?

-Xmx和-XX:MaxPermSize的值在JVM将使用的内存上放置一个上限。

  

至少有一种方法可以强制GC进行日食吗?

AFAIK,没有。即使有,也可能没有帮助。 JVM不太可能将内存返回给操作系统。

  

以下是我目前使用的设置,在我看来并没有被观察到。

根据您的说法(eclipse.exe的内存使用量为700Mb),我会说正在观察设置。


如何让Eclipse使用更少的内存?

  • 修剪-Xmx和-XX:MaxPermSize的值。但是,如果你做得太多,你就有可能让Eclipse变得迟钝(因为它更频繁地使用GC)并且最终会出现问题('因为它会耗尽内存并且事情会因OOME而失败)

    < / LI>
  • 摆脱多余的插件。

  • 切换到“较小的”Eclipse(例如“Classic”发行版)......虽然您将丢失一些可能正在使用的J2EE支持。

  • 关闭项目。

  • 关闭文件。

  • 更频繁地重启Eclipse。


但最好的解决方案是升级您的平台:

  • 为您的PC /笔记本电脑购买更多内存。你最大可能花费几百美元。这是值得的。

  • 将操作系统切换到Linux。根据我的经验,Linux是一个比Windows XP更好的Java软件开发平台。它在内存和文件系统管理方面似乎做得更好。相同硬件上的性能差异很大。

    您始终可以将计算机设置为双启动,这样您仍然可以运行XP以进行其他操作。

答案 1 :(得分:2)

700 MB的操作系统级别处理流程与您的内存设置一致。堆为512m,permgen空间为128m + JVM本身需要一些开销。

您无法强制GC。如果内存是可释放的,JVM会释放它。请注意,您不能简单地查看操作系统级别的进程使用情况,因为这代表了JVM内存使用率达到峰值的点。一旦扩展到特定大小,JVM就不会释放堆或permgen空间。它太昂贵而且没有必要。分配的空间位于JVM进程的虚拟地址空间中。它不代表实际的物理内存使用情况。随着物理内存变得紧张,操作系统将积极地更换为最近未使用的磁盘存储器页面。

所以......您需要专门的内存分析工具来准确表示Eclipse内存使用情况。

如果在没有任何磁盘活动的情况下看到很多磁盘活动,那么操作系统可能确实没有物理内存并进行大量交换。尝试关闭几个项目或重新启动Eclipse。只需要一个带内存泄漏的插件就可以占用所有可用内存。

答案 2 :(得分:1)

我假设您正在通过javaw.exe的路径运行BEA JRockit。请注意,-X...选项是特定于JVM的,因此对于JRockit,它们的工作方式可能与Sun的JVM不同。 This link似乎表明您应该使用

... -Xms:40m -Xmx:512m ...

但设置堆大小限制只会导致Eclipse在达到限制时失败,因此您无法解决实际问题。强制GC通常没有帮助;任何理智的虚拟机都会定期或在需要时使用GC。

拥有一个700Mb的Eclipse听起来像是在处理大量数据,或者是在泄漏内存。 JRockit似乎有一个memory leak detector,可能会给你一个问题所在的暗示。

答案 3 :(得分:1)

ini文件内存设置对虚拟机没有帮助。将VM参数更改为here

答案 4 :(得分:0)

Eclipse非常口渴。限制它最有可能使它崩溃。你真的需要一台新电脑。