Как освободить память в андроиде - PullRequest
0 голосов
/ 15 октября 2011

Мне нужно освободить указатели ниже, как освободить память для холста, краски и матрицы?

 Canvas pcanvas = new Canvas();

 Paint mPaint = new Paint(); 

 Matrix matrix = new Matrix(); 

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 15 октября 2011

В Java нет указателей, и вы не можете явно освободить память.

Однако возможно утечка памяти в Java и Android . Если какой-либо из ваших объектов ссылается на неуправляемую память, вы должны сообщить им, когда они могут освободить эту память.

Поскольку кажется, что вы выполняете работу, связанную с графикой, я предполагаю, что вы где-то используете растровые изображения, и они используют много памяти, и память должна быть освобождена. Когда вы закончите использовать растровое изображение, убедитесь, что вы позвонили Bitmap.recycle().

1 голос
/ 15 октября 2011

после того, как вы больше не ссылаетесь на созданный вами объект, присвойте ему нулевое значение. Это, очевидно, не освобождает немедленно память, но таким образом вы сообщаете сборщику мусора, что объект имеет право на сборку мусора .. (эффективный Java).

Редактировать: как сказал @spatulamania, если вы управляете растровым изображением, вы должны вызвать метод recycle (он, я думаю, вызов c / c ++ free), чтобы освободить память, связанную с. Устанавливать в null ссылку на растровое изображение бесполезно, поскольку растровое изображение реализовано в нативном виде, а объект java занимает несколько байтов.

...