2013-03-26 14 views
0

В приложении используется приложение Flash, в котором используется сотня MB моей памяти. Возможно ли как-то очистить эту память вручную?Исправить утечку памяти Flash во время выполнения

Например привнести некоторые

System.gc() 

в целом libflashplayer.so?

+0

Если использование памяти приложений не идет само по себе (когда памяти больше не нужно), то это предполагает, что flashplayer не собирает мусор вообще - обычный подозреваемый не удаляет прослушиватели событий, но запуск вашего приложения через профилировщик скажет вам больше (например, adobe scout) –

+0

Дело в том, что это не мое приложение, и у меня нет доступа к источникам. Я просто ищу способ сделать Flash-библиотеку для очистки своей памяти в системе. – hsz

+0

ОК. theres не так много, вы можете сделать тогда - запуск System.gc() не поможет - все, что он делает, это сделать сборку мусора раньше. если ваше приложение уже не является gc'ing самостоятельно, вызов gc() не имеет какой-либо разницы. –

ответ

0

GC периодически проходит по своей собственной системе, так что, если GC не освобождает память для вас, то вы сделали что-то не так с вашим Flash-приложением.

Если объект не получает GC'd, даже если он больше не нужен, вы должны вручную проверить код, чтобы объект должен был освободить всех прослушивателей событий. Возможно, вы забыли удалить слушателя TimerEvent.TIMER или любого другого слушателя в другом месте. Убедитесь, что вы правильно разыщите все объекты, если вы планируете больше не использовать этот экземпляр. Это включает в себя удаление объекта, который вам больше не нужен, из списка отображения его родителя, который вам по-прежнему нужен (но не включает очистку отображаемого списка этого объекта, как если бы он стал разыменованным, его отображаемый список больше не будет считаться действительным ссылку на вложенные объекты, чтобы они могли также собираться) и удаление всех слушателей, у которых нет флага useWeakReference, установленного в true при добавлении с этого объекта и всего его содержимого (слушатель, который не имеет слабо ссылающихся счетчиков как действительная ссылка). В принципе, вы всегда должны иметь полный контроль над тем, какой слушатель привязан к тому объекту, а также когда добавлять или удалять слушателей.

Смежные вопросы