2014-11-06 4 views
1

Думаю, мне нужна помощь в понимании коллекций мусора, и я знаю, что сбор мусора очищает тех, у кого нет ссылки из живой темы, так что у меня есть класс, который декодирует изображения следующим образом:Понимание коллекции мусора в android

new ImageDecoder(MyImageView).Decode(); 

Нужно ли мне ссылаться на класс ImageDecoder и нулевое его позже, или оно будет перерабатываться всякий раз, когда я вызываю MyImageView.setBackgroundResource (0); ?

или всякий раз, когда я создать ссылку на класс и класс добавляет тонн стеков, поэтому всякий раз, когда я сделать

MyClass aClass; 

    ... 

    aClass = null; 

Тогда вороха должны быть освобождены от всех Heap, что класс Туков в соответствии с Уставом, Но это не происходит в реальной жизни, как я вижу, как это работает?

спасибо большое;

ответ

0

Вы не можете управлять в Java, и это применимо и здесь. Назначение aClass = null не означает, что GC будет работать немедленно и освободить память в куче. Он будет работать, когда он подумает, что у JVM заканчивается память, а для создания новых объектов требуется больше места, чем это возможно, и в случае, если я остановлю основной поток и заморожу ваше приложение.

Oracle Java GC Basics

+0

да, но им заставить его сделать это в DDMS – Reza

+0

См принуждая или через программу, когда вы следующий, как Runtime.getRuntime() дс(). это не гарантирует, что GC будет работать. – virendrao