Если myBaseClass является единственной сохраненной ссылкой на
новый ClassA ()
и вы назначаете что-то еще для myBaseClass
новый ClassB ()
тогда не будет никакой ссылки, указывающей на ClassA, и сборщик мусора должен найти его при запуске.
Однако, если вы передадите myBaseClass библиотеке или классу, который хранит собственную ссылку на этот объект, при переназначении myBaseClass все равно будет ссылка, указывающая на ClassA, и сборщик мусора не очистит его, создав память протечь. Обычно хорошо написанная библиотека предоставит вам способ удалить ссылку. например,
var child:Sprite = new Sprite()
// one reference to the new Sprite
stage.addChild(child); // assume stage stores reference
// two references to the new Sprite
/**
* assume the following:
*
* child = null;
*
* one reference would still remain in stage
* garbage collector will not clean up the sprite
*/
stage.removeChild(child); // assume stage clears reference
// one reference left
child = null;
// no reference to the sprite, garbage collector will clean it up
Надеюсь, это немного прояснит ситуацию. По сути, вы хотите отслеживать, сколько ссылок на объект существует, если вы подозреваете, что это утечка памяти.
Я знаю, что у FlashDevelop есть профилировщик, который очень полезен для поиска этих ошибок. Кроме того, вам нужно знать, что при запуске сборщика мусора ... он освободит память и передаст шаблон пилы вашему профилировщику памяти.