【问题标题】:Memory leak in Mac OS X 10.7 AVCaptureScreenInput setCropRect: functionMac OS X 10.7 AVCaptureScreenInput setCropRect 中的内存泄漏:函数
【发布时间】:2011-10-25 08:29:51
【问题描述】:

我正在为 Lion 开发一个屏幕录制应用程序,主要使用 Lion 的新 AVCaptureScreenInput 类来获取屏幕上指定矩形的屏幕视频流。一切似乎都很好,但是:

根据活动监视器,每次我调用setCropRect:,内存使用将增加10-20Mb。由于我提供了在录制过程中可以更改矩形大小的功能,因此随着用户对矩形的更改很多,内存使用量可能会增加到 1-2Gb,这是一个灾难:(

我严重怀疑这是否是 Apple SDK 中的错误,因此 Apple 的示例代码 AVScreenShack 示例也存在此问题。

我的代码是这样的:

[m_AVCaptureSession beginConfiguration];
[m_AVScreenInput setCropRect:CGRectMake((int)grabRect.origin.x, (int)grabRect.origin.y,(int)grabRect.size.width, (int)grabRect.size.height)];
 [m_AVCaptureSession commitConfiguration];

谁能告诉我,如果这是 SDK 中的错误,或者我以错误的方式使用它,还是应该使用另一个类来执行此操作?谢了

【问题讨论】:

    标签: objective-c macos memory-leaks osx-lion avcapturesession


    【解决方案1】:

    既然您要打开一个配置事务,进行更改,然后立即提交更改,为什么不忽略该事务呢?库可能会延迟清理事务内存,直到录制会话完成。我认为没有必要使用配置事务,除非您需要一组配置更新是原子的。

    或者它可能是真正的泄漏。

    【讨论】:

    • 我试过setCropRect: 没有打开事务,但没有帮助,内存泄漏仍然存在:(
    猜你喜欢
    • 2013-11-15
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多