Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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
Java Eclipse在清除后未释放控制台(日志)内存_Java_Eclipse - Fatal编程技术网

Java Eclipse在清除后未释放控制台(日志)内存

Java Eclipse在清除后未释放控制台(日志)内存,java,eclipse,Java,Eclipse,我的Eclipse内存正在稳步地从500MB增加到>1GB,而我没有做任何特别的事情——只是运行一些日志繁重的程序。进行手动GC,关闭和重新打开项目根本没有帮助,一旦超过1GB,它就会停留在那里 我运行了jvisualvm,从heapdump中发现数百兆字节是char[],表示日志输出 我习惯于关闭停止进程的所有控制台,所以不是这样。 控制台缓冲区设置为1MB(字符)。我已关闭console视图并再次打开它 我可以粘贴特定的eclipse.ini,但我尝试了不同的GC和内存设置、不同的JVM、不

我的Eclipse内存正在稳步地从500MB增加到>1GB,而我没有做任何特别的事情——只是运行一些日志繁重的程序。进行手动GC,关闭和重新打开项目根本没有帮助,一旦超过1GB,它就会停留在那里

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

我习惯于关闭停止进程的所有控制台,所以不是这样。 控制台缓冲区设置为1MB(字符)。我已关闭console视图并再次打开它

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


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

当我想到在这里写一些聪明的东西时,我发现:禁用拼写检查的建议实际上产生了很大的不同

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

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


首选项>常规>显示堆状态

简短回答:堆大小没有缩小,只是在增长

长答覆: 最后,这似乎是多种因素的组合。我不完全确定JVM默认选项应该是什么,但我的XP机器将Windows性能优化设置为“服务器”/“后台应用程序”。我相信这也会导致JVM默认为“-server”选项,而不是“-client”。 -server选项不允许堆收缩

据我所知,parallelGC不允许堆收缩

XX:MaxHeapFreeRatio(70)和XX:MinHeapFreeRatio(30)的默认值在放弃可用内存方面相当懒惰。将它们设置为20/10将导致堆大小更接近实际使用情况


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

编辑器中同时打开了很多源文件吗?根据我的经验,关闭所有未使用的文件会释放大量内存。我一次只打开几个文件,没什么区别。不管我做什么,只要重新启动Eclipse,内存就永远不会回来。谢谢,我使用了这个选项,并从Eclipse和jvisualvm强制执行GC,但没有任何效果。