3

我已经迁移到 Eclipse 3.5.1 并观察到它在进行干净构建时需要 560 mb。并且内存在使用后不会被收集。它保持这样。

有什么解决办法吗?

JVM:jdk1.6.0_17 Windows XP,2GM RAM

下面是我的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

杰迪普。

4

6 回答 6

5

我花了很多时间研究与 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 Heap 这么大,请考虑将它们设置得较低,直到/除非您有反映其中任何一个的错误/崩溃。用完 PermGen 通常会导致 JVM 崩溃并在配置文件夹中转储一个日志文件,而堆错误将报告到正常的 .log 文件中。

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

希望有帮助。

于 2009-12-18T05:33:04.597 回答
3

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

于 2009-12-18T04:46:13.067 回答
1

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

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

如果您担心“内存泄漏”,您可以使用“jstat”准确查看不同内部内存堆使用了多少空间。

于 2009-12-18T04:42:49.330 回答
0

这听起来不像是过多的内存。您正在建设的项目有多大?

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

于 2009-12-18T04:40:44.030 回答
0

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

Eclipse 通常喜欢吃内存,但有些插件比其他插件更需要内存。如果您安装了任何扩展,请尝试将它们一一卸载,看看是否有确凿证据。

我当前的一个项目在构建过程中占用了 1.6 GB 以上的内存。这只是我们不得不忍受的东西,真的......

于 2009-12-18T04:53:52.647 回答
0

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

于 2012-05-30T12:27:41.083 回答