Был ли проверен ли макет объекта Java (JOL) на работу с Java 25 и включенными заголовками Compact объекта?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Был ли проверен ли макет объекта Java (JOL) на работу с Java 25 и включенными заголовками Compact объекта?

Сообщение Anonymous »


Java 25 была выпущена 16 сентября 2025 года и включала JEP 519 с компактными заголовками объектов (COH). Последняя версия JOL (0,17) была выпущена в феврале 2023 года. Я хотел бы знать, был ли вывод был проверен правильным при использовании JOL с включенным Java 25 и COH. < /P>
Заголовок Compact объекта можно включить в Java 25, используя следующий флаг: < /p>

Код: Выделить всё

-XX:+UseCompactObjectHeaders
Следуя совету в комментариях, я написал следующий тестовый класс для сравнения прогонов с использованием Java 25 с значениями по умолчанию и с включенными заголовками компактных объектов.

Код: Выделить всё

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());
}
}
Ниже приведены результаты, которые я вижу, запускающий метод Main с ванильной Java 25 и Java 25 с включенными заголовками компактных объектов.

Код: Выделить всё

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)
Установки yearrange экземпляры различаются на 8 байтов каждый. ImmutableCollections $ listn также отличается на 8 байтов. [B , который, я считаю, массив Byte в строке отличается, но не совсем значение, которое я ожидал. Нужно установить следующий флаг JVM: < /p>

Код: Выделить всё

-Djol.magicFieldOffset=true


Подробнее здесь: https://stackoverflow.com/questions/797 ... mpact-obje
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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