gpt4 book ai didi

iphone - iOS SDK : Adding AVCaptureVideoDataOutput to AVCaptureSession causes it to slowly leak memory indefinitely

转载 作者:行者123 更新时间:2023-11-28 23:08:42 28 4
gpt4 key购买 nike

我有一个 super 基本的 AVCaptureSession,设置了 AVCaptureVideoDataOutput 和 AVCaptureStillImageOutput。 AVCaptureVideoDataOutput 没有缓冲区委托(delegate)。没有什么花哨的,只是设置一个标准问题 AVCaptureSession。如果我只是编译应用程序并让它在那里停留大约 10 分钟,可用内存每分钟左右下降 1mb。我以 72mb 的空闲空间启动该应用程序,将其放在我的 table 上后,我看到空闲内存低至 33mb。

如果我注释掉我将 AVCaptureVideoDataOutput 添加到 session 的部分,可用内存保持在 70-72mb 左右。

因此,我设置了一个按钮以从 session 中删除 AVCaptureVideoDataOutput,点击该按钮后,可用内存立即跳回应用程序首次运行时的状态 (~72mb)。有没有其他人看到过这个并且知道解决方法?我的 iPhone 上装有 iOS 5.0 和最新的测试版 SDK。

编辑:这是添加 AVCAPtureVideoDataOutput 的代码:


...

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");
}
...

注释掉缓冲区委托(delegate)似乎没有什么不同。

再试一次,它在 6 分钟内从 ~70mb 免费变为 ~54mb 免费。 :(

最佳答案

在这种情况下,我不确定您是否应该如此关心当前的可用内存。 iOS 可能会自行决定缓存某些内容,或者为某些目的保留内存。

要检查内存泄漏 - 最好使用带有泄漏跟踪器的分析器,而不仅仅是当前可用内存。

此外,最好检查已发布的 iOS SDK 上的行为 - Beta 可能有一些问题,因为它是 Beta...

关于iphone - iOS SDK : Adding AVCaptureVideoDataOutput to AVCaptureSession causes it to slowly leak memory indefinitely,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8776059/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com