每天一道面试题:day16

188 阅读1分钟

question:python的内存管理机制
answer:
python的内存管理机制可以从引用计数,标记清除,分代回收这三个方面一一解释。
引用计数是一个高效的内存管理方式,每当有一个python对象被引用时其引用计数加一,当其不再被一个变量引用时其引用计数减一,当其引用计数变为零时该对象被删除。但当两个对象的引用计数都为1且只有他们两个互相引用时,即出现了循环引用,实际上是无效引用,此时当垃圾回收扫描到这些循环引用的对象时,就会将这些循环引用删掉,得出有效计数。而垃圾回收是分代回收的,对象存活的时间越长,对其的扫描频率越低,一共分三代(0代,1代,2代)。刚被创建的对象属于0代,根据其存活的时间的长短把他划入到下一代中。每次扫描都会扫描0代,一定次数后会扫描1代一次,扫描一定次数1代后会扫描2代一次,所以存活时间越久的对象被扫描的频率就越低,不用每次都扫描所有对象也提升了垃圾回收的性能。