我知道GC释放了不再引用的对象的内存,但有没有一种有效的方法来检查我是否引用了不再使用的对象?Java GC和内存使用情况跟踪
有关如何避免引用不再使用的对象的提示将大大增加。
正在使用Windows任务管理器在这种情况下的任何帮助?如果是这样,提示如何批评我的程序使用它也会有所帮助。
谢谢。
我知道GC释放了不再引用的对象的内存,但有没有一种有效的方法来检查我是否引用了不再使用的对象?Java GC和内存使用情况跟踪
有关如何避免引用不再使用的对象的提示将大大增加。
正在使用Windows任务管理器在这种情况下的任何帮助?如果是这样,提示如何批评我的程序使用它也会有所帮助。
谢谢。
的检查很简单。您仍然在使用您引用的所有对象。
与“内存泄漏”的对象添加到集合,并忘记清除它们时,他们不再需要一个共同的问题。解决这个问题的方法是使用WeakReferences或使用这些的集合。 WeakHashMap中。当其他地方不再提供参考时,这些内容会被清理干净。
恕我直言,Windows任务管理器比这里的帮助更容易混淆。 ;)
使用VisualVM的或像YourKit商业内存分析器是检查你的内存消耗的最佳方式。
您可能会发现文章What is a “Memory leak” in Java?有用的(我不知道,得到在这里发布的工具)。
我不知道如何找到引用但没有使用的对象 - 但有时也收集的对象会对你的程序的影响,可以是垃圾 - 如果你创建它们的质量和挑衅经常GC。
要跟踪GC活动,您可以简单地使用java non standard option-Xloggc:<file>
。这会将GC活动记录到给定文件。你会得到第一印象,你的应用程序有多垃圾收集。
我希望这是一个有用的信息给你,虽然我没有回答你的问题。