如何减少Eclipse的内存使用量?


81

Eclipse 3.4的内存使用从屋顶到最终成为问题。

我加载了一个简单的BlackBerry项目,使用量激增到将近400 MB,有时甚至更高。有什么办法可以降低它?


7
现在回想一下这个问题,我不得不说,如果我将Eclipse的内存使用量降低到400MB,我会感到很高兴。现在,我正努力将其降低到1GB(如果您包括用于实际运行我的项目的Tomcat副本,则还要再增加300MB ...)。
Jules

5
我正在写有关未来(2018年)的评论,而Eclipse在我当前的项目中占用了10 GB。
本杰明·巴鲁瓦

我刚刚从2030年回来,Eclipse在加载项目之前占用了5 TB的空间。
AngryHacker

Answers:


84

借助拼写检查器插件,Eclipse 3.4可以比以前的版本消耗更多的内存。

您可以转到窗口->首选项->常规->编辑器->文本编辑器->拼写,然后取消选中“启用拼写检查”框,以关闭该插件。

当然,提供使用更大的堆大小和更好的垃圾收集器的技巧也将对您有所帮助。


12
没为我工作。仍为900-930MB。我的意思是wtf可以这样做。
TheRealChx101

5
好答案。1个插件,大约50个我从未听说过/从未使用过的插件。(自我说明,开始使用IntelliJ)
8bitjunkie 2015年

10
2016年仍然面临这个问题。我的意思是日食占用了1GB的Ram空间。关闭拼写检查器插件也无济于事。
幸运

12
2017年,我的Eclipse现在使用1.7GB RAM,几乎没有其他插件。这种疯狂必须结束。
风暴

17

检查General -> Show heap status将启用此功能

Eclipse堆状态栏

在底部栏中。这样,您可以通过单击垃圾箱来随时手动运行垃圾收集器。这不是一个修复程序,更像是一种解决方法,但是它帮助大大减少了我的RAM / CPU使用率。


2
这有助于我确定分配的4GB RAM确实没有使用,即使操作系统显示正在使用4GB内存。我减少了分配给Eclipse的RAM数量,以帮助为其他应用程序释放RAM。
Navigatron'17年

1
由于Sping Tool Suit是从eclipse派生而来的,因此这也适用于STS
Talib Hussain


8

尽管您可能可以修改配置,删除各种插件等,但购买更多内存可能更具成本效益。您目前有多少?我认为内存不足2GB的开发人员机器处于规格范围内,我怀疑很多人会将其提高一倍。


3
完全同意。1GB的内存低至$ 20-30。您的时间值多少钱?要使一组插件在Eclipse中工作已经足够艰苦,而不必(可以说)不必要地解决它。
cletus

2
我的最大容量为2GB(这是一台旧笔记本电脑)。问题在于,一旦加载了BlackBerry模拟器,Visual Studio(Web服务)和Chrome(用于在网络上查找内容),笔记本电脑就会开始爬行。但是Eclipse是迄今为止最大的罪魁祸首。3.3或3.2版本还不错。
AngryHacker

2
完全不同意。开发者的机器应该是较低的正是这种原因,至少50%(CPU和RAM),比预期的最终用户的机器规格。
finnw 2010年

4
@finnw:是什么让您认为开发人员计算机的工作量类似于用户计算机的工作量?许多应用程序不需要像IDE这样的资源。您当然应该在一台低规格的机器上测试您的应用程序,但这并不意味着在一台机器上进行开发。实际上,您显然已经在假设一个客户端应用程序。如果我正在开发针对移动设备的Web应用程序,是否也应该在手机上开发?
乔恩·斯基特

2
@Nate:那是直接的问题,但很多时候在堆栈溢出它更有益看问题问题。如果有人用SQL串联值而忘记了一些引号,那么对该问题的直接答案将是添加引号,但是解决该问题的方法是参数化SQL。如果OP担心400MB,那么在我看来,开发人员机器普遍缺少内存是更广泛的问题。
乔恩·斯基特

7

现代版本的Eclipse确实需要大量RAM才能完成其任务。但是在任何现代机器上都应该运行得非常快。

假设您有足够的物理内存(除非有许多其他进程正在运行,或者您正在使用RAD,否则2GB就可以了),有关调整设置的一些技巧,请参阅这篇有关Eclipse的内存使用的文章。两个最常见的罪魁祸首是Xmx和/或MaxPermSize设置得太低(Xmx默认为256M,MaxPermSize默认为64M)。

您可以通过传递命令行参数或在Eclipse安装位置中调整eclipse.ini来修改值。

您应该以如下形式结束:

...
-vmargs
-Xms128m
-Xmx1024m 
-XX:MaxPermSize=128m

1
MaxPermSize不再存在
Ray Kim

6

我的Eclipse占用了800MB以上的内存,并占用了2GB的虚拟空间(也许其中一部分已换出)。Java可以说是猪,它总是给Java带来负面影响。

但是,有些东西很多人都不知道:增量垃圾收集器。-Xincgc 副作用是它会不时将内存交还给系统。默认情况下,Java会占用内存,而当它不再需要内存时,它将自己保留。incgc是一种不同的策略,其中假定可以将内存交还给系统而不会遇到麻烦变得更加合理。但是,这可能会影响性能。

有很多垃圾收集设置。您也可以有多个线程来处理GC。并行GC可以做到这一点。不知道那人是否会回去记忆,不要这样认为。


以及如何更改Eclipse的垃圾收集器选项?
Matthieu

3
事情变了。现在,Java 8中的默认GC是分代垃圾收集器,该垃圾收集器还将内存返回给系统。您不再想嘲笑它了
Mike

1
就我而言,当实际使用量小于0.5GB时,java 8很乐意保留超过3GB的空间,因此不幸的是我确实需要对其进行嘲笑。
nsandersen '16

6

+UseG1GC从eclipse.ini中删除选项。我从这里读到它仅用于6GB的堆内存。


3
是的,这对我有用。我换成-XX:+useG1GC-XX:+UseSerialGC内存问题消失了。听起来像是G1GC中的错误。
唐·史密斯

1
切换到-XX:+UseSerialGC剪切> 300mb。竖起大拇指
阿曼

3

如果400 Mb RAM对您来说是个大问题,则您可能需要尝试其他IDE。Eclipse存储了很多状态信息,您实际上不需要其中的一些或大部分。那是设计选择。

现在,我在Eclipse和QtCreator中都打开了相同的项目:彻底重建后,Eclipse使用156 Mb RAM,Qt Creator满意66 Mb。


2

您可以在Windows 7上尝试64位版本的Eclipse和JDK的64位版本。这两者都引起了我必须使用的第三方框架的奇怪问题。Oracle的32位JRockit(现在免费)似乎更快,并且内存更好。这是我的Eclipse.ini设置:

这是我的日食旅馆

-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.2.R36x_v20101222
-nosplash
org.eclipse.platform
--launcher.XXPermSize
512m
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vm
C:/Program Files (x86)/Java/jrockit-jdk1.6.0_31-R28.2.3-4.1.0/jre/bin
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xquickstart
-XX:+AggressiveHeap
-XX:+AggressiveOpts
-XX:+UseParallelOldGC
-XX:ParallelGCThreads=2
-XX:ThreadPriorityPolicy=1
-Xverify:none
-Xms1100m
-Xmx1100m

我切换到32位JRockit JDK,对于Eclipse来说似乎更快一些。我关闭了,并且没有安装超过所需的数量。对于每种单独的应用程序开发类型(Android,J2EE,仅是Spring,...),我都有不同的Eclipse安装。硬盘空间便宜。然后,我就可以拥有每个插件所需的插件。如果我不使用它们,我将永远不希望加载所有Android工具。STS也仅适用于Spring,而我仅适用于OpenShift Cloud。


我有点困惑,因为您首先拥有--launcher.XXMaxPermSize 512m,然后拥有--launcher.XXMaxPermSize 256m(以及几行重复的行,即defaultAction,然后是nosplash和showsplash)。它是否使用找到的第一个配置?
jambriz 2014年

它不应该在那里有第二个。我再次检查,没有在我当前的那个。另外,如果您使用的是JDK 8个不同的参数
Tim Spann 2014年

1

尝试禁用eclipse插件。当我打开saros插件时,Eclipse占用了我一半的内存。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.