찾다

 >  Q&A  >  본문

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

我们知道在java的伪共享概念中,“共享”的最小内存区域大小就是一个cache line。当两个以上CPU都要访问同一个cache line大小的内存区域时,就会引起冲突。
因此我们通常采用填充的办法,解决cache line 带来的速度慢的问题。

问题:
如何查看自己的HotSpot JVM的缓存行cache line的大小呢?我知道默认的是64字节,但是不同机子还是不一样的。

阿神阿神2857일 전756

모든 응답(2)나는 대답할 것이다

  • 阿神

    阿神2017-04-18 09:23:00

    이 캐시 라인 크기는 CPU와 밀접한 관련이 있습니다. jdk는 그러한 API를 제공하지 않습니다.
    Windows 시스템은 어떤지 모르겠습니다. Linux 시스템에서는 /sys/devices/system/cpu/cpu0/cache/ 디렉터리

    에 이런 파일이 있습니다. 으아악

    그 중 coherency_line_size는 캐시 라인 크기를 기록합니다.

    명령줄에서 `getconf LEVEL1_DCACHE_LINESIZE
    64`를 통해 얻을 수도 있습니다.

    Java 프로그램이 실행 중일 때 이 번호를 얻으려면 지금 생각할 수 있는 것은 프로그램이 이 번호를 얻기 시작할 때 셸을 동적으로 실행하거나 파일을 보는 것입니다. 그런 다음 이 번호를 시스템 속성에 설정하면 나중에 꺼내서 사용할 수 있습니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 09:23:00

    명령줄에서 jvisualvm을 열어 확인해 보세요.

    회신하다
    0
  • 취소회신하다