美文网首页
内存泄漏相关

内存泄漏相关

作者: 玩裤 | 来源:发表于2016-09-05 14:52 被阅读0次

什么是内存泄漏

对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。

内存泄漏原因

  1. 全局集合。(周期性清除作业)
  2. 特别注意事件监听和回调函数。不用的时候,要释放掉。
  3. 通常一些成员变量引用其他对象,初始化的时候需要置空。
  4. 缓存。(使用java.lang.ref.SoftReference类坚持将对象放入缓存。这个方法可以保证当虚拟机用完内存或者需要更多堆的时候,可以释放这些对象的引用。)
  5. 当集合里面的对象属性被修改后,再调用remove()方法时不起作用。
  6. 各种连接。(数据库连接,网络连接,IO连接),除非调用其close() 将其连接关闭,否则是不会自动被GC回收的。
  7. 内部类和外部模块等的引用。
  8. 不正确的单例模式。即:如果单例对象持有外部对象的引用,那么这个外部对象将不能被jvm正常回收,导致内存泄露。

SoftReference & WeakReference

如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存.

弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。

相关文章

  • 漫谈内存泄漏

    前言 最近看了同事整理的一份与内存泄漏相关思维导图。突然想从内存泄漏的角度探讨一下与内存相关的话题。什么是内存泄漏...

  • Netty源码-内存泄漏检测toLeakAwareBuffer

    1. 概述 2. 前置知识 3. 内存泄漏检测入口 4. 内存泄漏检测相关类介绍 5. 内存泄漏检测相关配置参数 ...

  • 一些笔试题

    java内存相关 内存泄漏 在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并...

  • 内存泄漏相关

    什么是内存泄漏 对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。 内存泄漏原因 全局集...

  • 转:Android内存泄漏总结

    Android内存泄漏相关的文章有很多,在此结合自己的理解进行总结。 一、简介 内存泄漏:无用的对象没有被及时释放...

  • Android内存泄漏总结

    Android内存泄漏相关的文章有很多,在此结合自己的理解进行总结。 一、简介 内存泄漏:无用的对象没有被及时释放...

  • 【Android】面试题精选

    内容持续更新中...... 内存相关 1 导致内存泄漏的原因有哪些? 内存泄漏的根本原因是:长生命周期的对象持有短...

  • 【Android测试】内存泄漏检测 LeakCanary

    什么是内存泄漏和内存溢出?内存泄漏有什么危害?LeakCanary检测内存泄漏? 内存泄漏(Memory Leak...

  • 内存泄漏相关知识

    不是所有指令都执行得又快又好,下面介绍内存及它如何影响系统运行。普遍认为,多数程序语言接近硬件或高性能,如C、C+...

  • iOS内存泄漏相关

    前言: 这个话题其实以前也有所了解,虽然不是很清楚的分析是不是内存泄漏,但是起码知道delegate要使用weak...

网友评论

      本文标题:内存泄漏相关

      本文链接:https://www.haomeiwen.com/subject/nmurettx.html