我已经阅读并通过论坛搜索有关泄漏内存和逐渐增加内存。我试图在我的程序中每60秒使用System.GC()方法的调用,并且由于我的RAM使用量每次调用都会下降,所以它似乎正在工作。为什么不使用这种方法是个好主意?在我读过的每篇文章中,他们似乎都模糊地解释了为什么这种方法不能释放内存,但我的程序似乎是另有说法。有人甚至说这种方法什么都没做,但建议垃圾收集者清理干净。注意:我的泄漏不是来自我知道的静态方法,因为我从整个项目中删除了它们,RAM仍然增加。我会发布我的代码,但它相当大,所以我怀疑任何人都会阅读它。Java System.GC()和内存泄漏
感谢您的帮助。
你真的不保存任何调用GC的东西。当堆积满GC时将被触发,并且没有真正的优势(但是*执行成本)使其更快地发生。 –
要明白,每当你创建一个要在打印语句中使用的字符串,你(以某种方式)“泄漏”该字符串的存储空间,因为当你完成它时,它不会立即“回收”。但没关系,因为GC会找到这些未使用的对象并为您回收存储空间。但是这并不需要立即发生 - 与等待GC“正常”触发相比,提早恢复存储没有任何优势。 –
@热舔好了我现在明白了。仅在默认情况下打印出信息会增加内存使用量,并调用GC方法清理用于此目的的RAM。那么我怎么去解决这个明显的泄漏问题。我删除了所有的静态信息,但没有发生重大变化。我有大量使用计时器的actionListeners可能是问题所在? – StoneAgeCoder