Eclipse内存限制
我使用的是32位WinXP,看不到升级,有没有办法限制Eclipse一天分配的内存量?我还在eclipse中以调试模式运行WebLogic10服务器。几个小时后,我有了一个700mb的STS.exe(eclipse)和400mb的java.exe(服务器)。至少有一种方法可以在eclipse上强制执行GC吗? 以下是我隐秘地使用的设置,在我看来,这些设置没有被观察到Eclipse内存限制,eclipse,Eclipse,我使用的是32位WinXP,看不到升级,有没有办法限制Eclipse一天分配的内存量?我还在eclipse中以调试模式运行WebLogic10服务器。几个小时后,我有了一个700mb的STS.exe(eclipse)和400mb的java.exe(服务器)。至少有一种方法可以在eclipse上强制执行GC吗? 以下是我隐秘地使用的设置,在我看来,这些设置没有被观察到 -vm C:\bea\jdk160_05\bin\javaw.exe -showsplash --launcher.XXMaxPe
-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和Firefox4。
根据javaw.exe的路径判断,我假设您正在运行BEA JRockit。请注意,
-X..
选项是特定于JVM的,因此它们对JRockit的工作方式可能与Sun的JVM不同。似乎表明您应该使用
... -Xms:40m -Xmx:512m ...
但是设置堆大小限制只会导致Eclipse在达到该限制时失败,因此您无法解决真正的问题。强制GC通常没有帮助;任何健全的虚拟机都将定期或在需要时进行GC
拥有700Mb的Eclipse听起来像是您的Eclipse正在处理大量数据,或者正在泄漏内存。JRockit似乎有一个可以给你一个问题所在的提示。Eclipse非常渴。限制它最有可能使它崩溃。你真的需要一台新电脑。操作系统级进程占用的700MB与你的内存设置一致。堆需要512m,永久空间需要128m,JVM本身需要一点开销 你不能强迫GC。如果内存是可释放的,JVM就会释放它。请注意,您不能简单地查看操作系统级别的进程使用情况,因为这表示JVM内存使用量达到峰值的点。JVM一旦扩展到一定大小,就不会释放堆或永久空间。这实在是太贵了,根本没有必要。分配的空间位于JVM进程的虚拟地址空间中。它并不代表实际的物理内存使用情况。随着物理内存越来越紧张,操作系统将大量调出最近没有使用过的磁盘内存页 所以。。。您需要专门的内存分析工具来准确地表示Eclipse内存使用情况 如果您看到大量的磁盘活动,而实际上不应该有,那么操作系统可能确实没有物理内存,需要进行大量的交换。尝试关闭几个项目或重新启动Eclipse。只需要一个内存泄漏的插件就可以消耗所有可用内存 有没有办法限制Eclipse一天分配的内存量 -Xmx和-XX:MaxPermSize的值为JVM将使用的内存设置了一个上限 至少有一种方法可以在eclipse上强制执行GC吗 好吧,不,即使有,也没用。JVM不太可能将内存返回给操作系统 以下是我目前使用的设置,在我看来,这些设置没有得到遵守
-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.exe的内存使用量为700Mb),我认为这些设置正在被观察
-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使用更少的内存
- 修剪-Xmx和-XX:MaxPermSize的值。然而,如果你做得太多,你很可能会使Eclipse变得迟钝(“因为它必须更频繁地进行GC”),最终会变得脆弱(“因为它会耗尽内存,并且会在OOME中出现故障”)
- 去掉多余的插件
- 切换到“较小”的Eclipse(例如“经典”发行版)。。。尽管您可能会失去一些正在使用的J2EE支持
- 关闭项目
- 关闭文件
- 更频繁地重新启动Eclipse
但最好的解决方案是升级您的平台:
- 为您的PC/笔记本电脑购买更多内存。你大概可以花几百美元把它最大化。这是值得的
- 将操作系统切换到Linux。根据我的经验,Linux是一个比WindowsXP更好的Java软件开发平台。它似乎在内存和文件系统管理方面做得更好。相同硬件上的性能差异很大 您可以随时将计算机设置为双启动,这样您仍然可以运行XP进行其他操作