私は、AVCaptureVideoDataOutputとAVCaptureStillImageOutputで設定された超基本的なAVCaptureSessionを持っています。 AVCaptureVideoDataOutputにはバッファデリゲートがありません。 AVCaptureSessionの標準的な問題を設定するだけで、何の工夫もなにもありません。私がアプリケーションをコンパイルして約10分間そこに置くと、利用可能なメモリは毎分1メガバイトほど低下します。私は72MBの無料でアプリを起動して、それを私の机の上に座らせた後、私は無料のメモリが33MBの低さになるのを見ました。iOS SDK:AVCaptureSessionにAVCaptureVideoDataOutputを追加すると、ゆっくりとメモリが無期限にリークします。
私がAVCaptureVideoDataOutputをセッションに追加する部分をコメントアウトすると、使用可能なメモリは約70-72mbのままです。
私はセッションからAVCaptureVideoDataOutputを削除するボタンを設定し、ボタンをタップした後、利用可能なメモリは、アプリケーションが最初に実行されたとき(〜72MB)に直ちにジャンプします。誰かがこれを見て回避策を知っていますか?私は私のiPhoneと最新のベータSDKでiOS 5.0を持っています。
編集:
...
NSNumber *rgbNum = [NSNumber numberWithInt:kCVPixelFormatType_32BGRA];
NSDictionary *videoSettings = [NSDictionary dictionaryWithObject:rgbNum forKey:(id)kCVPixelBufferPixelFormatTypeKey];
dataOutput = [AVCaptureVideoDataOutput new];
[dataOutput setAlwaysDiscardsLateVideoFrames:YES];
[dataOutput setVideoSettings:videoSettings];
_videoDataOutputQueue = dispatch_queue_create("VideoDataOutputQueue", NULL);
[dataOutput setSampleBufferDelegate:self queue:_videoDataOutputQueue];
dispatch_release(_videoDataOutputQueue);
if ([session canAddOutput:dataOutput]) {
[session addOutput:dataOutput];
} else {
NSLog(@"couldn't add av data output");
}
...
違いを確認していないようバッファデリゲートをコメントアウト:ここAVCAptureVideoDataOutputを追加するコードです。
ちょうどこれをもう一度試して、それは〜70mbから6分以内に〜54mbまで無料でした。 。私はあなたがこの場合は、現在の使用可能なメモリについてはあまり気にしなければならないか分からないのiOSは、それ自身の決断に何かをキャッシュしたり、いくつかの目的のために確保したメモリを保持してもよい:(
フレームワークに実際のリークがあり、コードに悪影響を及ぼすと思われる場合は、バグレポートを提出する必要があります。また、Apple Devフォーラムでディスカッションを開く必要があります。 –
ありがとうございましたJasonさん、あなたはこれを気づいているのか、一時的な回避策があるのか疑問に思っています。 – taber