Свободная память байтового массива в Java - PullRequest
19 голосов
/ 04 июня 2010

Каков наилучший способ освободить память, выделенную массивом байтов (новый байт [размер] в Java)?

Ответы [ 4 ]

52 голосов
/ 04 июня 2010

Прекратить ссылаться на него.

14 голосов
/ 04 июня 2010

При создании нового байта [] в Java вы делаете что-то вроде

byte[] myArray = new byte[54];

Чтобы освободить его, вы должны сделать

myArray = null;

Если что-то еще ссылается на ваш байтовый массив, например

yourArray = myArray;

вам также нужно установить другие ссылки на null, например

yourArray = null;

В Java сборка мусора происходит автоматически. Если JVM может обнаружить, что часть памяти более недоступна для всей программы, JVM освободит память для вас.

6 голосов
/ 04 июня 2010

Удаление всей ссылки на этот массив байтов. Сборщик мусора позаботится обо всем остальном.

2 голосов
/ 04 июня 2010

Установка всех ссылок на него на null сделает его кандидатом на автоматическую сборку мусора в Java. Вы не можете быть уверены, сколько времени потребуется, чтобы это произошло. Если вам действительно нужно немедленно восстановить память, вы можете позвонить на System.gc();

Также, чтобы очистить, вам не нужно явно указывать нулевые ссылки. Если ссылки выходят за рамки, они автоматически обнуляются, например, ссылка на локальную переменную будет обнулена, как только завершится выполнение метода, в котором она объявлена. Таким образом, локальные переменные обычно неявно высвобождаются все время во время выполнения приложения.

...