Это утечка памяти в моем настольном приложении AS3 AIR, или мне не о чем беспокоиться? - PullRequest
0 голосов
/ 13 марта 2020

Я запускаю это на 1-секундном таймере:

trace(String(System.totalMemory));

Это показывает, что память моего приложения увеличивается примерно на 1 МБ каждые 5 минут, даже когда он не используется.

В тестировании, когда я запускаю

System.gc(); System.gc();

в той же функции, которая запускает System.totalMemory каждую секунду 1 секунду, память падает прямо вниз и остается около 8 МБ. Однако, если я запускаю

System.gc(); System.gc();

только один раз, память падает до 8 МБ, но затем продолжает увеличиваться до go в предыдущем темпе.

Почему мое приложение увеличивает это использование памяти, когда оно находится в состоянии покоя, и это то, о чем стоит беспокоиться, или это факт, что System.g c (); System.g c (); сбрасывает память прямо вниз означает, что у меня нет утечек памяти и что я должен просто позволить сборщику мусора позаботиться о вещах?

Спасибо.

1 Ответ

1 голос
/ 17 марта 2020

Если бы у вас была утечка памяти, ваша память увеличилась бы без намеченной причины и не была бы полностью уменьшена сборщиком мусора.

Это было бы утечкой памяти:

Memory usage: 8 MB
Memory usage: 12 MB
Garbage collection.
Memory usage: 9 MB
Memory usage: 14 MB
Garbage collection.
Memory usage: 10 MB
Memory usage: 16 MB

И так далее, как видно из примера, базовая память, используемая после завершения сборки мусора, увеличивается. В вашем случае базовая память составляет 8 МБ и не увеличивается, поэтому утечки нет.

Утечка возникает, когда вы используете память способом, который не может быть собран сборщиком мусора, когда он больше не нужен.

...