如何在Java进程中找到L1缓存行的大小?

Zim*_*oot 5 java cpu caching

我有兴趣微调缓存意识的数据结构(例如参见Michael Spiegel论文中的无锁跳过树或Herlihy等人的跳房子散列)以及防止错误共享,例如在并发数组处理期间.我已经知道如何通过"sun.arch.data.model"属性找到JVM指针大小,但是我还没有找到一种方法来确定L1缓存中缓存行的大小.

请注意,此信息并不重要,因为我可以继续使用L1线路大小的保守估计(微调缓存意识数据结构时为64字节,防止错误共享时为256字节); 但是,如果很容易获得L1缓存属性,那么我也可以使用它.