Итак, мои вопросы: есть ли другой способ преобразовать байтовый массив в строку без создания нового экземпляра String?
Нет, не там. Java строки являются неизменяемыми. Это означает, что вы не можете обновить / заменить символов в строке. Преобразование байтового массива в существующую строку нарушит неизменность.
String s;
while (true) {
s = new String();
}
Будет занимать все больше и больше памяти, или он автоматически освобождается и перераспределяется?
Память автоматически восстанавливается сборщиком мусора (G C). G C запускается время от времени, идентифицирует объекты, которые больше не достижимы ; то есть, что программа не может найти больше. Эти объекты затем удаляются.
Это простая версия. В действительности не все «потерянные» объекты восстанавливаются одновременно, и есть некоторые специальные виды достижимости, которые обрабатываются по-разному.
В любом случае, в вашем примере, каждый раз, когда программа обходит l oop, создан новый объект String
и ссылка на предыдущий String
потеряна. Затем (при необходимости) G C находит и удаляет потерянные объекты.
Если бы память была освобождена автоматически, мне больше не пришлось бы искать альтернативный метод для преобразования массива байтов в строку.
Да, а вы нет.
В Java вы просто позволяете исполняющей системе иметь дело с выделением и освобождением памяти объекта. (Просто убедитесь, что объекты не становятся доступными случайно).