Adobe AIR - Сборка мусора и system.gc () - PullRequest
0 голосов
/ 18 октября 2011

Я создаю настольное приложение Adobe AIR с Flash CS5, которое широко использует растровые данные, байтовые массивы и строки base64.Через некоторое время использование памяти приложения удваивается.

Рекомендуется ли использовать system.gc () для освобождения памяти в этот момент или это плохая практика?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

system.gc - функциональность только для отладки в AIR и Flash Player.Я думаю, что лучше перерабатывать bitmapdata и другие объекты, если вы можете избежать gc, и если нет, вызывать bitmapdata.dispose () и bitmapdata = null, как только вы закончите с ними.Если в вашем проекте есть растровые объекты одного размера в разное время, вы можете использовать один и тот же экземпляр BitmapData для работы с ними.Это похоже на то, как ItemRenderers перерабатывают элементы или как даже другие платформы, такие как iOS UITableViewController, перерабатывают / повторно используют UITableViewCell.Сборка мусора не является панацеей, ее следует использовать, когда простота программирования важнее производительности.

1 голос
/ 19 октября 2011

Вам не нужно вызывать system.gc, так как он будет вызываться автоматически во время простоя во время выполнения Flash. Если вы называете это самостоятельно, вы можете замедлить работу приложения без реальной выгоды.

Если вам больше не нужны BitmapData или ByteArray, просто наберите BitmapData.dispose() или ByteArray.clear().

...