我有一个循环,我将对象(.append)添加到数组中并在Background-Task中删除它们一段时间后(dispatch_async(backgroundQueue,{) 在这个循环中,我的数组理论上有一个最大数量的对象,因为我正在移除旧对象。
我观察到的是,内存消耗很高(超过400MB),直到我收到didReceiveMemoryWarning警告并且我的didReceiveMemoryWarning被调用,有时应用程序崩溃。所以看起来我的清洁不起作用,但是 当在循环中间停止并等待几秒钟(比如10秒)时,我看到内存慢慢下降到我的预期值(60MB)。
所以我想我在概念上做错了。
如何正确地做到这一点?有没有办法像Java forcegc那样强制清理内存?
清理主任务中的对象(dispatch_async(dispatch_get_main_queue(),{)时,内存未达到限制,但GUI正在存储。