我的第一步将是确定这是否是真正的内存泄漏。
先前答案中提出的观点都与收集对象的 速度 有关,而不是与是否收集对象有关。只有后者才是真正的内存泄漏。
我们的项目也遇到了类似的困境,并以“慢动作”模式运行该应用程序以判断是否存在真正的泄漏。我们能够通过减慢输入数据流的速度来做到这一点。
如果在“慢动作”模式下运行时问题消失了,那么该问题可能是先前答案中建议的问题之一,即,终结器线程无法足够快地处理终结器队列。
如果这是问题所在,听起来您可能需要执行一些非平凡的重构,如链接到的Bringer128
页面中所述,例如
现在,让我们看一下如何编写需要事后清除的类,以便其用户不会遇到前面概述的问题。最好的方法是将此类分为两类-
一种用于保存需要事后清除的数据,另一种用于保存其他所有内容-并仅在前者上定义终结器
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)