事件监视器中定义的“实际内存”确定为可能的罪魁祸首。 我的应用在 UIScrollViews 中分配大型 UIImages。其中一个-6ren">
gpt4 book ai didi

objective-c - iPad iOS 内存管理 - 如何释放 UIImageViews、UIScrollViews 使用的 "Real Memory"?

转载 作者:太空狗 更新时间:2023-10-30 03:45:34 24 4
gpt4 key购买 nike

我的一个应用程序存在内存问题,并且我已将 Instruments> 事件监视器中定义的“实际内存”确定为可能的罪魁祸首。

我的应用在 UIScrollViews 中分配大型 UIImages。其中一个图像应用了 CIImageFilter。事件监视器显示,在第一次推送包含带有大图像的 ScrollView 的 View Controller 时,实际内存使用量跃升至约 300mb。后续推送/弹出将其增加至约 500mb:

我读到“Live Bytes”不计算纹理和 CALayers 使用的内存,所以我的问题是:如何正确释放我的图像/ ScrollView 的 CALayers 使用的内存?

看右边的真实内存使用蓝色饼图:

enter image description here

对于这个进程来说,实内存和虚内存都是最高的:

enter image description here

令我困扰的是,当弹出 Controller 时,我试图清理我的大 ScrollView 和图像,“实时字节”的数字下降到大约 5mb,而“实际内存”保持高得离谱(~ 500 兆):

ContainerScrollView* container = ...;
[container.view removeFromSuperview];
container.view = nil;

这是分配分析: enter image description here

最佳答案

我发现有人在这里遇到了类似的问题:

Mysterious CoreImage memory leak using ARC

答案(我真的希望是)似乎开始使用 NSData dataWithContentsOfFile: 然后创建一个 UIImage imageWithData:。有用户选择的图像?将其写入临时文件并读回。我不相信任何其他图像方法,因为在我 12 小时的测试中,它们在 iOS 6.1.2 中对于大 ImageView 表现得不合理。

关于objective-c - iPad iOS 内存管理 - 如何释放 UIImageViews、UIScrollViews 使用的 "Real Memory"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15771449/

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