24.内存泄漏定义及常见示例

  1. 24.内存泄漏定义及常见示例
    1. 24.1 题目
    2. 24.2 深入解析
    3. 24.3 答题示例
    4. 24.4 关键词联想

24.内存泄漏定义及常见示例


24.1 题目

内存泄漏指什么?常见的内存泄漏有哪些?


24.2 深入解析

内存泄漏(Memory Leak)是指程序中不再使用的对象由于仍被某些引用持有,无法被 GC 回收,导致内存持续增长直至耗尽。常见的泄漏场景包括:

  1. 静态引用

    • 静态变量或单例持有对对象的引用,即使对象已不再需要,也不会被清理。
  2. 事件与委托遗漏注销

    • 对象在订阅事件后未及时使用 -= 注销,导致发布者持续持有对订阅者的引用。
  3. 未释放的非托管资源

    • 打开的文件流、数据库连接、GDI 对象等没有调用 Dispose() 或未使用 using 语句块。
  4. 长生命周期集合

    • 将对象添加到全局列表、字典或缓存后没有清理,集合持续膨胀。
  5. 闭包与定时器

    • 匿名方法或计时器回调捕获外部变量,导致外部对象不能被释放。

内存泄漏的危害:随着运行时间增长,堆内存无法回收,应用会出现卡顿、延迟,严重时抛出 OutOfMemoryException


24.3 答题示例

“内存泄漏是指不再使用的对象由于仍被引用,导致 GC 无法回收,从而持续占用内存引发性能问题。常见原因包括静态变量、未注销的事件/委托、未释放的非托管资源和长期缓存等,面试中可举例说明并强调 Dispose 和注销订阅的重要性。”


24.4 关键词联想

  • 内存无法回收
  • 静态引用
  • 事件注销 (-= Subscribe)
  • Dispose / using
  • 长生命周期集合
  • 闭包 & 定时器
  • OutOfMemoryException


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏