Подтвердить что ты не робот

Закрытие ByteArrayOutputStream не влияет?

Что делает этот оператор: "Закрытие ByteArrayOutputStream не имеет эффекта" (http://java.sun.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html#close()) означает?

Я хочу, чтобы память в ByteArrayOutputStream освобождалась. Действительно ли ByteArrayOutputStream.close() освобождает память?

Спасибо.

4b9b3361

Ответ 1

Использует ли ByteArrayOutputStream.close() действительно освободить память?

Нет. Это абсолютно ничего. Вы можете посмотреть исходный код:

public void close() throws IOException {
}

Чтобы освободить память, убедитесь, что нет ссылок на нее, и пусть сборщик мусора делает свое дело. Как и любой другой нормальный объект.

Режимы, основанные на файлах и сокетах, являются особыми, поскольку они используют ресурсы ОС без памяти (файловые дескрипторы), которые вы можете использовать независимо от памяти. То, что закрытие их явно важно. Но это не относится к чисто основанному на памяти ByteArrayOutputStream.