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"/>
Подробнее здесь: https://stackoverflow.com/questions/795 ... r-upgradin