В моем приложении все работает нормально, пока я не отсоединю поток для чтения аудиоданных из файла и их обработки.
Сборщик мусора, похоже, ничего не знает о том, что происходит в этой теме, независимо от того, что я делаю. Я попытался [NSThread self], [NSThread currentThread], [[NSGarbageCollector defaultCollector] collectIfNeeded] и collectExhaustivly].
Я переключился на NSOperation с NSOperationQueue из NSThread.
Ни одно из предложенных решений не сработало. Совсем недавно я перешел с NSMutableArrays на
Float32* pfArray= calloc(numFloats, sizeof(Float32));
для хранения моих данных, и использовал
free(pfArray);
чтобы освободить эту память. Это работает лучше, но все еще течет приличное количество.
Сборка мусора, похоже, начинает работать в некоторой степени после того, как «реальный мем», указанный в Activity Monitor, достигает некоторого произвольного числа, но когда он работает, он НЕ освобождает всю используемую память. Это просто не позволяет ему идти намного выше, чем произвольный порог.
Я читал, что GC - это путь, но сейчас я не уверен, и у меня есть почти полностью написанная программа. Любые предложения будут очень полезны. Спасибо!