我写了融合代码:
import array
import Cocoa
import Quartz
import Quartz.CoreGraphics as qcg
while True:
imageRect = qcg.CGRectMake(0, 0, 1280, 800)
imageRef = qcg.CGWindowListCreateImage(imageRect,
qcg.kCGWindowListOptionOnScreenOnly,
qcg.kCGNullWindowID,
qcg.kCGWindowImageDefault)
bitmap = Cocoa.NSBitmapImageRep.alloc()
bitmap.initWithCGImage_(imageRef)
a = array.array('L', [255]*4)
color = bitmap.getPixel_atX_y_(a, 50, 22)
time.sleep(1)我的记忆被泄露了。每次迭代时,它都会增加大约30 MB。当python执行以下行时会发生这样的情况:
color = bitmap.getPixel_atX_y_(a, 50, 22)在客观-C文件中,没有关于这种行为的警告。如何防止泄漏?
编辑:
.
.
a = array.array('L', [255]*4)
pool = Cocoa.NSAutoreleasePool.alloc().init()
color = bitmap.getPixel_atX_y_(a, 50, 22)
del pool
.
.这样可以阻止泄漏。
发布于 2016-11-21 12:38:34
在我的应用程序中,我也面临着同样的内存使用问题,因为它达到600 mb,然后我的应用程序崩溃,然后我使用一个自动释放池手动释放内存。
@autoreleasepool {
//Write Your Code Here
} 创建一个自动释放池,然后检查您的内存使用情况.Hope,这有助于您
https://stackoverflow.com/questions/40720149
复制相似问题