Я использую GPUImage, чтобы выполнить кучу обработки изображений как в реальном времени, так и на статических изображениях, я заметил, что после вспенивания через ~ 100 миниатюр, каждое из которых имеет несколько другое изображение обработка делается для каждого, что есть еще объекты в памяти после того, как они сделали обработку, и все они связаны с GPUImageFilters:Что-то из GPUImageFilters остается в памяти даже после освобождения
(Allocation продолжительностью жизни «созданной & все еще живет»)
You может видеть всплеск памяти из некоторой обработки, которую я делаю, и afte r его сделано, с другой стороны горы у меня есть кое-что оставленное в памяти, я выбрал некоторые 24KB блоки для изучения (есть другие). Вы можете видеть справа, первый элемент происходит от GPUImageSoftLightBlendFilter, если я нажимаю на все 12 элементов, каждый из которых поступает из GPUImageFilter (GPUImageHardLightBlendFilter, GPUImageMultiplyBlendFilter и т. Д.). Теперь, если я сделаю такую же обработку во второй раз и развернуту выбор графа памяти, вы не увидите никаких новых экземпляров этих объектов, как если бы они занимали место в памяти один раз и просто зависали:
Конечно, если бы я изменить выбор графа памяти, чтобы показывать только вторую гору, которую вы видите, что те линии не появляются снова, потому что они не были «созданы & все еще живет» снова:
Почему это, я не хочу, чтобы память из этих объектов GPUImageFilter, висящих на протяжении всего моего приложения? Я ввел некоторые записи в GPUImageFilters, чтобы подтвердить, что они освобождены, и вызывается dealloc.
Возможно, это связано с управлением памятью в сочетании с графическим процессором? Возможно, структура OpenGL ES никогда не выпускается должным образом. – kev