2011-03-29 126 views
3

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

-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和火狐4 enter image description here

回答

1

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

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

但设置堆大小限制只会导致一旦到达极限Eclipse的失败,这样你就不会解决真正的问题。强制执行GC通常不会有帮助;任何理智的VM都会定期或在需要时进行GC。

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

+0

嗨JesperE,我使用的Java (TM)SE运行环境(1.6.0_05构建-B13) 的HotSpot的Java(TM)客户端虚拟机(建设10.0 - B19,混合模式) – Elijah 2011-03-30 01:07:34

0

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

2

700MB的OS级进程usuage与您的内存设置一致。堆为512m + 128m为permgen空间+ JVM本身的开销。

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

因此......您需要专门的内存分析工具来精确表示Eclipse内存使用情况。

如果您看到很多磁盘活动时应该没有,操作系统可能确实超出了物理内存并进行了大量的交换。尝试关闭一些项目或重新启动Eclipse。它只需要一个内存泄漏插件来消耗所有可用的内存。

3

有没有办法限制Eclipse在一天中分配的内存量?

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

难道至少有一种方法可以强制eclipse上的GC吗?

AFAIK,no。即使有,也可能无济于事。 JVM不太可能将内存提供给操作系统。

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

根据你所说的(eclipse.exe的内存使用量700Mb),我会说设置被观察到。


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

  • 修剪-Xmx和-XX的值:MaxPermSize参数。然而,如果你这样做太多,你可能会使Eclipse变得迟钝(因为它必须更频繁地使用GC)并且最终会失败(因为它将耗尽内存,并且事情将会随着OOME而开始失败)

  • 摆脱多余的插件。

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

  • 关闭项目。

  • 关闭文件。

  • 更频繁地重新启动Eclipse。


但是,最好的解决办法是升级您的平台:

  • 买你的PC /笔记本电脑的一些更多的内存。你大概可以花费几百美元。这是值得的。

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

    您可以随时将您的机器设置为双启动,以便您仍然可以为其他事情运行XP。

+0

谢谢斯蒂芬对此做出了详细的回应我确实对我的电脑升级感到嗤笑:)我有一个公司的绞索,没有希望获得64位操作系统。这是我悲痛的症结所在。笔记本电脑有大量的RAM,它只是在32位操作系统下不可见。叹。 – Elijah 2011-03-30 01:15:25

+0

@Yev - IIRC,升级到Linux也会有帮助,即使是32位版本也是如此。你可以做的另一件事是请求第二台个人电脑,并将其他一些东西(浏览器,电子邮件,MS Office等)卸载到该机器上。 – 2011-03-30 01:23:28

1

ini文件内存设置对虚拟机无效。更改虚拟机的参数,如here