Eclipse清除后不释放控制台(日志)内存

时间:2012-09-11 16:22:08

标签: java eclipse

我的Eclipse足迹从500MB稳步增长到> 1GB而没有特别做任何事情 - 只是运行一些日志繁重的程序。做一个手动GC,关闭和重新打开项目根本没有用,一旦它超过1GB就停留在那里。

我运行jvisualvm并从heapdump中发现数百兆字节是表示日志输出的char []

我让它成为关闭已停止进程的所有控制台的习惯,所以事实并非如此。 控制台缓冲区设置为1MB(字符)。我已关闭控制台视图并重新打开它。

我可以粘贴我特定的eclipse.ini,但我尝试了不同的GC和内存设置,不同的JVM,不同的Eclipse版本 - 行为仍然是相同的。

对我而言,似乎日志在某个地方卡住了,并且永远不会被释放。还有其他人有这个问题吗? 是否存在从旧控制台视图中释放内存的设置?

2 个答案:

答案 0 :(得分:1)

虽然我在这里想到了一些聪明的东西但我发现了这一点:How to reduce Eclipse's memory usage?禁用拼写检查的建议实际上会产生很大的差异

所以..这是我自己的贡献:这可能听起来很奇怪,但我也发现自己有很多未使用的断点让Eclipse变得迟钝。定期清理所有断点是一个合理的习惯。

这只是与此相关的一个提示,可以选择显示内存并在Eclipse中强制GC。

偏好设置>常规>显示堆状态

答案 1 :(得分:0)

简短回答:堆大小不会缩小,只会增长。

答案很长: 最后,它似乎是一系列因素。我不完全确定JVM默认选项应该是什么,但我的XP机器将Windows性能优化设置为'Server'/'Background applications'。我相信这也会导致JVM默认为'-server'选项而不是'-client'。 -server选项不允许堆缩小。

据我所知,parallelGC不允许堆缩小。

XX的默认值:MaxHeapFreeRatio(70)和XX:MinHeapFreeRatio(30)在放弃空闲内存时非常懒惰。将它们设置为20/10将导致堆大小更接近实际使用。

为什么这一切都很重要?好吧,如果您正在使用Java开发桌面应用程序,您的客户可能会对不断增加的内存使用率感到不满,并责怪您糟糕的编程。有点像Firefox的情况。

相关问题