Увеличение потребления памяти из -за постоянного поведения пула строки после обновления с Java 17 до Java 21JAVA

Программисты JAVA общаются здесь
Anonymous
Увеличение потребления памяти из -за постоянного поведения пула строки после обновления с Java 17 до Java 21

Сообщение Anonymous »

При обновлении нашего проекта с Java 17 до Java 21 мы заметили увеличение потребления памяти. После сброса кучи и анализа различий я обнаружил, что в памяти хранятся тысячи пустых строк.import java.lang.management.ManagementFactory;
import java.text.DecimalFormat;

public class DecimalFormating {

static DecimalFormat decimalFormat = new DecimalFormat("#.##");
static DecimalFormat decimalFormat2 = new DecimalFormat();

public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
try {
String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0];
Process p = Runtime.getRuntime().exec("D:\\JAVA\\jdk-17.0.2\\bin\\jmap.exe -dump:format=b,file=heapdump_string_decimal_17.hprof " + pid);
p.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}));
}
}
< /code>
Следующий код прост, поскольку он определяет два экземпляра DecimalFormat, которые, в свою очередь, определяют несколько пустых строк, как видно здесь и здесь. Затем он сбрасывает кучу в файл. < /P>
Я скомпилировал и запустил код как с Java 17.0.2, так и с Java 21.0.6, и вот как выглядит память: < /p>
  • Для Java 17 вы можете видеть, что все строки должны быть пустыми, и той же адресу, которая является пустой, которая должна быть пустой. /> < /li>
    Для Java 21, каждая строка имеет свой адрес памяти, в результате чего пустая строка определяется шесть раз и поглощающая шесть раз в шесть раз, чем в предыдущем java: Imava: Imeg grava, чем в предыдущем java: Ime deg. alt = "Введите описание изображения здесь" src = "https://i.sstatic.net/owgw1ja4.png"/>
это поведение нормально? Я не могу найти никаких упоминаний о таком виде изменений в выпуске заметок Java между версиями 18 и 21.

Подробнее здесь: https://stackoverflow.com/questions/795 ... r-upgradin

Вернуться в «JAVA»