Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse内存限制_Eclipse - Fatal编程技术网

Eclipse内存限制

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

我使用的是32位WinXP,看不到升级,有没有办法限制Eclipse一天分配的内存量?我还在eclipse中以调试模式运行WebLogic10服务器。几个小时后,我有了一个700mb的STS.exe(eclipse)和400mb的java.exe(服务器)。至少有一种方法可以在eclipse上强制执行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和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进行其他操作


ini文件内存设置对虚拟机没有帮助。更改虚拟机参数,正如

Hi JesperE,我正在使用Java(TM)SE运行时环境(build 1.6.0_05-b13)Java热点(TM)客户端虚拟机(build 10.0-b19,混合模式),感谢Stephen的详细回复。关于升级我的电脑,我确实得到了一个笑声,tho:)我有一个公司的绞索,没有希望得到64位操作系统。这是我悲伤的症结所在。笔记本电脑有大量的内存,在32位操作系统下是看不见的。唉。@Yev-IIRC,升级到Linux也会有帮助。。。即使是32位版本。你可以做的另一件事是要求第二台电脑,然后把你的其他东西(浏览器、电子邮件、微软办公软件等)卸载到那台电脑上。