Накидал я тест для проверки работы сборщика мусора.
Если запустить так — то будет все нормально вечный цикл будет постоянно заполнять вектор.
Но если закоментировать метод destroy — то произойдет Out Of Memory.
if (i == 18000) { — 18000 возможно прийдеться подобрать вручную (это на моем эмуле хватило столько записей — чтобы заполнить память, возможно на других будет heap меньше)
Следовательно — можно пойти двумя дорогами:
1. всегда нужно очищать все глобальные ссылки в экземплярах классов (метод destroy). Только глобальные, так как объекты, которые созданые только в методе — память за ними будет очищена после работы метода. Очищать нужно в том числе и int a; => a=null; иначе память все равно останется не доступной
2. принять правило — всегда обнулять ненужные ссылки.
ИМХО — 2 ой вариант более геморный — так как запаришся всегда за собой убирать %))
!
в связи с этим вопрос: действительно ли мусорщик убирает всегда (если ссылки на объект не глобальные) после отработки метода или это может происходить не всегда — и нужно всетаки принудильно обнулять ссылки локальные в методе.