python如何管理对象内存



感觉Python在以下两种情况下处理内存的方式不同:

案例1

import numpy as np
while True:
array = np.ones((10000, 10000))

案例2

import mediapipe as mp
while True:
faceMesh = mp.solutions.face_mesh.FaceMesh(False, 3, True, 0.5, 0.5)

情形1根本不会导致内存溢出,但是,情形2确实很快地填充了RAM。你能解释一下python是如何管理内存使用的吗?为什么第1种情况不会导致溢出,而第2种情况会导致溢出?

在内部,Python使用引用计数器。当运行variable = value1时,value1的引用计数器增加。当您运行variable = value2时,value1的引用计数减少,value2 is incremented. If the count on的value1 '下降为零,可以删除。

其他的都取决于系统和模块。看起来numpy立即释放了空间。在任何实例中活动的数组都不会超过2个。我不知道mediapipe在做什么。

最新更新