首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPUImage内存累积

GPUImage内存累积
EN

Stack Overflow用户
提问于 2014-05-10 05:50:28
回答 1查看 289关注 0票数 0

我正在使用这段代码使用GPUImage生成5张模糊图像,似乎有大约20MB的内存积累,从未释放过。我做错了什么吗?

下面是我的代码:

代码语言:javascript
复制
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    GPUImageFastBlurFilter *blurFilter = [[GPUImageFastBlurFilter alloc] init];
    GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:[image copy]];
    [stillImageSource addTarget:blurFilter];
    CGFloat maxBlur = 12.0;
    for (int i=0; i < BLUR_STEPS; i++) {
        if (!self.stopBlurOperation) { //stops blur operation on close
            UIImageView *imageView;
            if (i < self.blurredImageViews.count) {
                imageView = (UIImageView *)self.blurredImageViews[i];
                blurFilter.blurRadiusInPixels = maxBlur * (i+1) / BLUR_STEPS;
                [blurFilter useNextFrameForImageCapture];
                [stillImageSource processImage];
                UIImage *blurredImage = [blurFilter imageFromCurrentFramebuffer];
                dispatch_async( dispatch_get_main_queue(), ^{
                    [imageView setImage:blurredImage];
                });
                blurredImage = nil;
            }
        }
    }
    [blurFilter removeAllTargets];
    [stillImageSource removeAllTargets];
    [GPUImageContext setActiveShaderProgram:nil];
    blurFilter = nil;
    stillImageSource = nil;
});
EN

回答 1

Stack Overflow用户

发布于 2014-05-11 00:56:29

首先,您似乎使用的是旧版本的框架,因为GPUImageFastBlurFilter已经存在几个月了。存储库中的最新代码使用了新的帧缓冲区缓存内存模型,这在大多数应用程序中的效率要高得多。

其次,这是运行多个模糊过程的一种非常低效的方式。在UIImages之间来回传输数据需要传输数据,这很慢,而且还需要使用Core Graphis重新绘制,这甚至更慢。同样,过去几个月框架中的代码具有生成大半径模糊的有效方法,而不会出现任何您以前可能见过的伪造物,从而使上面的循环变得不必要。

最后,您在上面的循环中运行了一个紧密的循环,并且在循环中的每一遍都至少生成一个自动释放的UIImage。在没有自动释放池的情况下,当循环运行时,您将继续在内存中构建这些池。但是,正如我所说的,如果只更新到存储库中的最新代码,则可以删除所有这些,而不必担心内存积累。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23574520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档