Java 25 была выпущена 16 сентября 2025 года и включала JEP 519 с компактными заголовками объектов (COH). Последняя версия выпуска JOL (0,17) была выпущена в феврале 2023 года. Я хотел бы знать, является ли вывод ниже правильным при использовании JOL 0.17 с включенным Java 25 и COH. < /P>
Заголовок Compact объекта можно включить в Java 25, используя следующий флаг: < /p>
Код: Выделить всё
-XX:+UseCompactObjectHeadersКод: Выделить всё
import java.util.List;
import org.openjdk.jol.info.GraphLayout;
public class JOLJdk25Test
{
public enum Generation
{
GREATEST("Greatest Generation", 1901, 1927),
SILENT("Silent Generation", 1928, 1945),
BOOMER("Baby Boomers", 1946, 1964),
X("Generation X", 1965, 1980),
MILLENNIAL("Millennials", 1981, 1996),
Z("Generation Z", 1997, 2012),
ALPHA("Generation Alpha", 2013, 2029);
private final String name;
private final YearRange years;
Generation(String name, int from, int to)
{
this.name = name;
this.years = new YearRange(from, to);
}
}
public record YearRange(int from, int to){};
public static void main(String[] args)
{
List generations =
List.of(Generation.values());
System.out.println(
GraphLayout.parseInstance(generations).toFootprint());
}
}
Код: Выделить всё
JDK 25 Default:
java.util.ImmutableCollections$ListN@4eec7777d footprint:
COUNT AVG SUM DESCRIPTION
7 32 224 JOLJdk25Test$Generation
7 24 168 JOLJdk25Test$YearRange
14 29 416 [B
1 48 48 [Ljava.lang.Object;
14 24 336 java.lang.String
1 24 24 java.util.ImmutableCollections$ListN
44 1216 (total)
JDK 25 Compact Object Headers:
java.util.ImmutableCollections$ListN@4eec7777d footprint:
COUNT AVG SUM DESCRIPTION
7 32 224 JOLJdk25Test$Generation
7 16 112 JOLJdk25Test$YearRange
14 24 344 [B
1 40 40 [Ljava.lang.Object;
14 24 336 java.lang.String
1 16 16 java.util.ImmutableCollections$ListN
44 1072 (total)
Код: Выделить всё
-Djol.magicFieldOffset=trueПодробнее здесь: https://stackoverflow.com/questions/797 ... ders-enabl
Мобильная версия