2015-06-15 6 views
3

Я создал 2d игру для android, используя растровые изображения. После закрытия игры секция памяти студии Android показывает, что память не де-распределена. Итак, как я могу выделить выделение памяти, которая выделяется для растровых изображений. У меня есть массив Bitmap называется chopper и я инициализируется какКак освободить/освободить память в игре android

chopper[0] = BitmapFactory.decodeResource(getResources(), R.drawable.copter1); 
    chopper[1] = BitmapFactory.decodeResource(getResources(), R.drawable.copter2); 
    chopper[2] = BitmapFactory.decodeResource(getResources(), R.drawable.copter3); 

Так что во время закрытия игры я пытался освободить память, как

chopper[0]=null; 

Но он не показывает свободную память в андроид студии памяти граф. Это способ освободить память? Если нет, то как я могу освободить память перед закрытием игры. Заранее спасибо

ответ

1

В Java, если объект null не освободит память. Память может быть освобождена сборщиком мусора, когда сборщик мусора будет работать в следующий раз, если не будет ссылок на этот объект в любом месте.

В вашем случае, если вы используете этот массив в деятельности, закрыть все ресурсы, которые могут использовать этот массив в onDestroy() методе вашей деятельности, и гарантировать, что нет никаких объектов, плавающих вокруг, который ссылается этот объект после того, как Активность разрушена.

+0

Я знаю концепцию, которую вы только что сказали. Но я пытаюсь заставить очистить память перед закрытием игры. Есть ли какой-либо код в java, чтобы сделать то же самое. –

0

Вы должны позвонить bitmap.recycle() API, чтобы фактически освободить память. См. Официальную статью о bitmaps memory management

+0

Я пробовал это, но карта памяти Android-студии все еще показывает, что память не очищается. –

+0

Вы уверены, что эта очищенная память связана с растровыми изображениями? – dasar

+0

Возможно, да, потому что я инициализировал все мои другие объекты равными нулю при выходе из игры. –

Смежные вопросы