байт java: я не могу понять, что здесь используется

avatar
ke xu
9 августа 2021 в 03:37
63
1
0

byte: Зачем это делать

{ байт p000, p001, p002, p003, p004, p005, p006, p007; ... }

/** The namespace for field padding through inheritance. */
final class BLCHeader {
  abstract static class PadDrainStatus<K, V> extends AbstractMap<K, V> {
    byte p000, p001, p002, p003, p004, p005, p006, p007;
    byte p008, p009, p010, p011, p012, p013, p014, p015;
    byte p016, p017, p018, p019, p020, p021, p022, p023;
    
    ...
    byte p088, p089, p090, p091, p092, p093, p094, p095;
    byte p096, p097, p098, p099, p100, p101, p102, p103;
    byte p104, p105, p106, p107, p108, p109, p110, p111;
    byte p112, p113, p114, p115, p116, p117, p118, p119;
  }

  /** Enforces a memory layout to avoid false sharing by padding the drain status. */
  abstract static class DrainStatusRef<K, V> extends PadDrainStatus<K, V> {
    static final VarHandle DRAIN_STATUS;

    ...
}

это происходит из исходного кода кофеина:https://github.com/ben-manes/caffeine/blob/master/caffeine/src/main/java/com/github/benmanes/caffeine/cache/BoundedLocalCache .java

Источник
Vadik
9 августа 2021 в 03:47
1

Без контекста трудно догадаться. Что такое BLCHeader и PadDrainStatus? Пожалуйста, добавьте больше деталей к вашему вопросу.

ke xu
9 августа 2021 в 03:58
1

это исходный код кофеина: github.com/ben-manes/caffeine.git ; com.github.benmanes.caffeine.cache.BLCHeader; его можно использовать для записи состояния кеша

Ответы (1)

avatar
boneill
9 августа 2021 в 04:11
3

Учитывая, что это параллельный кеш, заполнение предотвращает совместное использование строк кеша. Строка кэша — это единица памяти, которая загружается в кэш центральным процессором. Фактический размер зависит от конструкции ЦП, но обычно минимальный размер составляет 64 байта. Просто выполните поиск в сети, используя некоторые из этих терминов, и вы найдете больше информации.

Ben Manes
9 августа 2021 в 05:39
1

Хорошо сказано. Это конкретное воплощение JVM взято из статьи @aleksey-shipilev Java Objects Inside Out.