在我断开连接以从文件中读取音频数据并进行处理之前,所有事情在我的应用程序中都可以正常运行。

不管我做什么,垃圾回收似乎都不了解该线程上发生了什么。我尝试过[NSThread self],[NSThread currentThread],[[NSGarbageCollector defaultCollector] collectIfNeeded]和collectExhaustivly]。
我从NSThread使用NSOperationQueue切换到了NSOperation。

这些建议的解决方案均无效。最近,我从NSMutableArrays切换到

Float32* pfArray= calloc(numFloats, sizeof(Float32));

保存我的数据,并用于
free(pfArray);
释放内存。这工作得更好,但仍然泄漏了相当数量。

在“活动监视器”中指示的“实际内存”命中某个任意数字之后,垃圾回收似乎确实在某种程度上开始工作,但是当它看起来确实有效时,它不会释放所有正在使用的内存。它只是不允许它超出任意阈值。

我已经读过GC是要走的路,但是现在我不确定并拥有一个几乎完全编写的程序。任何建议将非常有帮助。谢谢!

最佳答案

垃圾回收确实适用于应用程序的所有线程。您可能不知不觉地保持了对某些植根对象的引用,从而泄漏了一个子图。但是,如果没有原始代码,就不能说太多了。

08-05 21:54