首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用finalize检测Java内存泄漏

用finalize检测Java内存泄漏
EN

Stack Overflow用户
提问于 2013-09-28 13:48:40
回答 2查看 1.4K关注 0票数 3

好的,我在网上读过很多关于finalize()方法的文章,以及我们不能真正依赖它的事实.

是的,很清楚(我想)

但是,当内存泄漏发生时,在深入VisualVM内部之前,我是否可以使用finalize方法作为主要的调试工具?

(一个微小的日志消息,比如finalize中释放的对象和构造函数中的“创建对象”)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-28 13:54:54

您希望跟踪被保留的对象,而不是那些正在释放的对象( finalize显示的就是这样)。更重要的是,您想知道为什么要保留对象,即保存对象的引用路径。我建议使用VisualVM作为起点,如果堆很大或者问题很难解决,就可能使用商业分析器。

当资源未被明确清除时,我使用了finalize()进行日志记录。也就是说,它应该近在咫尺。

票数 5
EN

Stack Overflow用户

发布于 2015-04-25 06:34:05

通过添加jvm参数生成堆转储/系统核心。然后http://www.oracle.com/technetwork/java/javase/memleaks-137499.html下载http://eclipse.org/mat/工具。在上面的工具中加载生成的转储,然后如下所示

通过选择终结器概述,它将提供可由终结器线程清除的对象数量以及终结器线程的相关信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19067688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档