我們知道在java的偽共享概念中,“共享”的最小內存區域大小就是一個cache line。當兩個以上CPU都要訪問同一個cache line大小的內存區域時,就會引起沖突。因此我們通常采用填充的辦法,解決cache line 帶來的速度慢的問題。問題:如何查看自己的HotSpot JVM的緩存行cache line的大小呢?我知道默認的是64字節,但是不同機子還是不一樣的。
2 回答

函數式編程
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里,之后可以取出來用。
添加回答
舉報
0/150
提交
取消