【问题标题】:Memory leak pyobjc内存泄漏pyobjc
【发布时间】:2017-04-04 20:19:28
【问题描述】:

我写了闲散代码:

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)

在 Objective-C 文档中没有关于此类行为的警告。如何防止这种泄漏?

编辑:

.
.
a = array.array('L', [255]*4)
pool = Cocoa.NSAutoreleasePool.alloc().init()
color = bitmap.getPixel_atX_y_(a, 50, 22)
del pool
.
.

这会阻止泄漏。

【问题讨论】:

    标签: python objective-c macos memory-leaks pyobjc


    【解决方案1】:

    我的应用程序也面临同样的内存使用问题,因为它达到 600 mb,然后我的应用程序崩溃,然后我使用自动释放池手动释放内存。

     @autoreleasepool {       
    
    //Write Your Code Here
    
    
         }    
    

    创建一个自动释放池,然后检查您的内存利用率。希望这对您有所帮助

    【讨论】:

    • 以上,我是用python写的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2013-01-20
    • 2011-10-31
    • 2019-08-10
    • 2013-06-24
    • 2011-03-22
    • 2015-04-20
    相关资源
    最近更新 更多