java中的内存泄漏

时间:2012-10-31 06:17:49

标签: java memory-leaks jprofiler finalize

我使用jprofiler检测客户端代码的内存泄漏。启动java.util.hashmap $ entry使用的内存大幅增加到1700KB。之后它也减少了。堆转储show java.lang.ref.finalizer使用的是最大内存。结论是什么?当我尝试在我的源代码中找到finalize()时,它不存在。在HTML文件中,finalize()就像这样使用。 finalize,这是什么意思?原因是finalize()或引用hashmap $ entry导致泄漏?

2 个答案:

答案 0 :(得分:2)

如果你想查找内存泄漏,你应该看看Full GC之后使用了多少内存,如果你有很多可终结的引用,那么你应该看两次,否则你很可能会看到许多临时对象没有物质

我怀疑如果他们定期关注使用的数据类型,那么你所看到的数据类型都不是问题。寻找只会消耗的消费。

答案 1 :(得分:0)

  

结论是什么?

首先,你所谓的"证据"是乱码,并不清楚无形版本应该是什么。但是,基于一些猜测...我根本看不到任何明显的内存泄漏迹象。

相反,看起来像如果你有一个很大的WeakHashMap要么无法访问,或者由于GC注意到堆已经过满而被清除了会发生什么。

然而,我的猜测可能是错误的,这里可能会有泄漏......

  

原因是finalize()或引用hashmap $ entry导致泄漏?

不一定。 (事实上​​,如果存在真正的存储泄漏,那么不太可能其中任何一个都是直接原因。)