Java @Contended 与 class 层次结构

Java @Contended with class hierarchy

我有一个 class 层次结构,其中每个级别都包含一些冷字段,并且子class 定义了它们自己的冷字段和热字段:

@Contended
public class Base {
    final int cold1;
    final int cold2;
}

public class Sub extends Base {
    final int subCold1;
    @Contended("hot1")
    volatile int hot1;
    @Contended("hot2")
    volatile int hot2;
}

我的问题是:

@Contended 不是通用的字段布局机制; "how can I make sure..." 的答案是 "you can't." @Contended 是对 VM 的提示,表明您希望频繁并发访问该字段,并且 VM 可能会尝试以如下方式进行布局以减少错误缓存行共享的发生率。或者它可能什么都不做;这是提示的本质。