我使用的是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。
答案 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非常口渴。限制它最有可能使它崩溃。你真的需要一台新电脑。