Java Eclipse3.5.1使用了大量内存

Java Eclipse3.5.1使用了大量内存,java,eclipse,eclipse-3.5.1,Java,Eclipse,Eclipse 3.5.1,我已经迁移到Eclipse3.5.1,并观察到在进行干净构建时需要560MB。而且内存在使用后不会被收集。就这样 有什么解决办法吗 JVM:jdk1.6.0_17 Windows XP, 2GM内存 下面是我的eclipse.ini -showlocation -showsplash org.eclipse.platform --launcher.XXMaxPermSize 384m -startup plugins/org.eclipse.equinox.launcher_1.0.201.R3

我已经迁移到Eclipse3.5.1,并观察到在进行干净构建时需要560MB。而且内存在使用后不会被收集。就这样

有什么解决办法吗

JVM:jdk1.6.0_17 Windows XP, 2GM内存

下面是我的eclipse.ini

-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
384m
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-vm
C:/Program Files/Java/jre6/bin/client/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/jaydeep/Ericsson/eclipse_galileo/eclipse/dropins

Jaydeep.

这听起来并不像是太多的内存。你正在建设的项目有多大


此外,内存可以在JVM中释放(即,它将可用于其他Java进程),但在JVM(Eclipse)关闭之前,它不会返回到操作系统

AFAIK一旦java虚拟机增加了,它就不会放弃其保留的堆大小。我在您的参数中看到,您的PermSize可能是384Mb,堆大小可能是384Mb,这意味着您的虚拟机可以增长到768Mb——并保持不变(我不能100%确定堆栈空间是否也被添加到其中)

恐怕月食只是一个怪物。如果你需要使它更轻,也许可以尝试删除你不需要的插件


如果您担心“内存泄漏”,您可以通过使用“jstat”确切地看到不同的内部内存堆使用了多少空间。

很久以前,我在构建一个非常大的项目时遇到了内存使用问题。我一直无法确切地证明这一点,但我得出的结论是Eclipse使用了大量空间来表示编译警告。尝试关闭所有Java编译器警告并进行重建,看看这是否有什么不同。

您确定堆没有被垃圾收集吗?尝试在状态栏中启用“heap status”(在首选项中启用它),并观察实际使用的内存是否下降(您可以单击小部件设置引用标记)

Eclipse通常喜欢消耗内存,但有些插件比其他插件更需要内存。如果您安装了任何扩展,请尝试逐个卸载它们,以查看是否存在冒烟的问题


我当前的一个项目在构建过程中消耗了超过1.6GB的内存。这是我们不得不面对的问题,真的…

我花了很多时间研究与Eclipse相关的内存问题,特别是Eclipse 3.2和臭名昭著的PermGen问题

有几件事可能会有所不同:

1) 删除用于初始堆大小的内存量:-Xms40m,而不是-Xms128m。 2) 不设置最小PermGen大小:移除-XX:PermSize=128m

1和2将减少您需要的初始空间量

3) 不要启动帮助系统-加载文档插件会占用大量内存,这永远不会消除。 4) 使用Preferences/General/Startup and Shutdown页面取消选择Eclipse启动时不需要的插件

3和4将防止内存使用量过早增长

5)如果你不需要Max PermGen和max堆那么大,考虑把它们设置得更低,除非你有一个错误/崩溃反映了其中的任何一个。PermGen用完通常会使JVM崩溃并将日志文件转储到配置文件夹中,而堆错误将报告到普通的.log文件中

解决了这些问题之后,您可能仍然会看到Windows内存会随着时间的推移而增长,而不会被释放,尽管JVM可能不会在任何给定的时间使用所有可用的内存。任务管理器显示JVM有多少可用空间,而Java内存通常可以通过jconsole(与JDK一起分发)进行监控,并且通常会更少


希望能有所帮助。

根据我的实验,ini中设置的所有vmargs选项仅在创建新工作区时播放一次。如果要更改现有工作区中的选项,请使用运行/调试配置。ini中的vmargs将不再被读取。

我不确定我是否见过Eclipse IDE运行时只有40Mb。一旦启动,如果任何规模合理的项目都处于开放状态,它通常至少会占用100Mb的空间。Hmmm。您是指windows报告的Eclipse使用的堆大小还是总内存消耗?您正在运行哪个版本的Eclipse(即安装了哪些可选软件包)?我曾经看到,当Eclipse第一次启动时,windows报告的总内存只有70 Mb,大约有20个插件项目。要确定堆空间的大小,可以使用首选项中的“显示堆状态”复选框动态监视堆的使用情况。你可以从jconsole中获得更多关于你的内存去向的细节。我仍然在家里使用3.4.2。刚刚启动它-工作区中有4个小项目-根据Process Explorer的报告分配了约115Mb。