为了账号安全,请及时绑定邮箱和手机立即绑定

怎么看自己的JVM中cache line是多少字节的?

怎么看自己的JVM中cache line是多少字节的?

凤凰求蛊 2018-10-19 22:39:42
我们知道在java的伪共享概念中,“共享”的最小内存区域大小就是一个cache line。当两个以上CPU都要访问同一个cache line大小的内存区域时,就会引起冲突。因此我们通常采用填充的办法,解决cache line 带来的速度慢的问题。问题:如何查看自己的HotSpot JVM的缓存行cache line的大小呢?我知道默认的是64字节,但是不同机子还是不一样的。
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

试试在命令行打开jvisualvm看看。

查看完整回答
反对 回复 2018-10-28
?
函数式编程

TA贡献1807条经验 获得超9个赞

这个cache line size与cpu息息相关。jdk也没有提供这样的api。
不知道windows系统是怎样的,linux系统中,在/sys/devices/system/cpu/cpu0/cache/目录下有这些文件

coherency_line_size
level
number_of_sets
physical_line_partitionshared_cpu_listshared_cpu_map
size
type
ways_of_associativity

其中coherency_line_size记录了cache line size。

在命令行下也可以通过`getconf LEVEL1_DCACHE_LINESIZE
64`来获得。

要想在Java程序运行时得到这个数,现在能想到的就是在程序启动时先动态执行shell或查看文件,获取这个数。然后把这个数set到system property里,之后可以取出来用。


查看完整回答
反对 回复 2018-10-28
  • 2 回答
  • 0 关注
  • 1582 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信