我正在 Ubuntu 16.04 (x86) 上使用 OpenCV(3.4.1,本地构建)调查 Python (3.5.2) 应用程序中的内存泄漏(或“膨胀”)。
该应用程序经常将图像写入文件,并且它使用.imwrite()方法来实现此目的。我发现这种使用会.imwrite()导致 RAM 使用量疯狂增长,但我找不到这种行为的原因。
为了调试这个问题,我准备了这个简单的测试脚本:
#!/usr/bin/python3
import cv2
import time
img = cv2.imread("vista.jpg")
idx = 0
while True:
filename = "/tmp/vista_copy_" + str(idx) + ".tiff"
cv2.imwrite(filename, img)
idx = idx + 1
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
运行此脚本时,我监控了可用 RAM(每 10 秒采样一次可用内存):
$ while [ 1 ] ; do grep MemFree /proc/meminfo ; sleep 10 ; done
MemFree: 898024 kB
MemFree: 780640 kB
MemFree: 667848 kB
MemFree: 545700 kB
MemFree: 437196 kB
MemFree: …Run Code Online (Sandbox Code Playgroud)