MST
星途 面试题库

面试题:Python中常见导致内存泄漏的场景有哪些

请列举至少三种Python编程过程中容易引发内存泄漏的常见场景,并简要说明原因。
39.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  • 循环引用
    • 原因:当两个或多个对象相互引用,而没有其他外部引用指向它们时,垃圾回收器无法自动回收这些对象占用的内存。例如,类A实例化一个对象a,类B实例化一个对象b,a引用b,b引用a,并且没有其他地方引用a和b,此时这两个对象形成循环引用,若不手动解除引用,就会导致内存泄漏。
  • 未关闭文件或资源
    • 原因:在Python中操作文件、数据库连接等资源时,如果没有正确关闭这些资源,系统资源会被持续占用。例如使用open()函数打开文件后,没有调用close()方法关闭文件,随着程序运行,打开的文件描述符会越来越多,最终耗尽系统资源,导致内存泄漏。
  • 大量创建对象且未及时释放
    • 原因:在循环或某些频繁执行的代码段中,持续创建大量对象,而这些对象没有及时被垃圾回收机制回收。例如在一个无限循环中不断创建大的列表对象,且这些列表对象没有被后续代码有效使用并释放,会导致内存不断被占用,引发内存泄漏。
  • 全局变量使用不当
    • 原因:如果在模块级别定义大量占用内存的全局变量,且这些变量在程序整个生命周期内一直存在,不会被垃圾回收器回收。比如定义一个巨大的全局列表,并且在程序运行过程中没有对其进行有效管理,会持续占用内存,可能引发内存泄漏。