Mac OS X 10.7中的内存泄漏AVCaptureScreenInput setCropRect:function

时间:2011-10-25 08:29:51

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

我正在为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中的错误,或者我以错误的方式使用它,还是应该使用其他类来执行此操作? THX

1 个答案:

答案 0 :(得分:0)

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

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