effectiveJava(5)消除过期的对象引用

  过期引用:永远也不会再被解除的引用。

  内存泄漏常见来源:

    一、类自己管理内存时,程序员应该警惕内存泄漏问题。一旦元素被释放掉,则该元素中包含的任何对象引用都应该被清空。

    二、缓存。一旦对象引用放到缓存中,就很容易被遗忘掉,从而使得对象不再有用之后的很长一段时间内仍然留在缓存中。实现缓存时,只要在缓存之外存在对某个项的键的引用

  该项就有意义,那么就可以用WeakHashMap代表缓存;当缓存中的项过期之后,他们会被自动删除。只有当所要的缓存项的生命周期是由该键的外部引用而不是由值决定时,WeakHashMap才有用处

    三、监听器和其他回调。

    由于内存泄漏通常不会表现成明显的失败,所以它们可以在一个系统中存在很多年。一般只有通过仔细检查代码,或者借助于Heap剖析工具才能发现内存泄漏的问题。因此,如果能够在内存泄漏发生之前就知道

如何预测此类问题,并阻止发生,是最好的。

猜你喜欢

转载自www.cnblogs.com/dgq-blog/p/8984729.html