recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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

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

阿神阿神2857 Il y a quelques jours752

répondre à tous(2)je répondrai

  • 阿神

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

    Cette taille de ligne de cache est étroitement liée au processeur. jdk ne fournit pas une telle API.
    Je ne sais pas à quoi ressemble le système Windows. Dans le système Linux, il y a ces fichiers dans le répertoire /sys/devices/system/cpu/cpu0/cache/

    .
    coherency_line_size
    level
    number_of_sets
    physical_line_partition
    shared_cpu_list
    shared_cpu_map
    size
    type
    ways_of_associativity

    Parmi eux, coherency_line_size enregistre la taille de la ligne de cache.

    Il peut également être obtenu via `getconf LEVEL1_DCACHE_LINESIZE
    64` sur la ligne de commande.

    Si vous souhaitez obtenir ce numéro lorsque le programme Java est en cours d'exécution, ce à quoi vous pouvez penser maintenant est d'exécuter dynamiquement le shell ou d'afficher le fichier lorsque le programme commence à obtenir ce numéro. Définissez ensuite ce numéro dans la propriété système, qui peut être retiré et utilisé ultérieurement.

    répondre
    0
  • PHP中文网

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

    Essayez d'ouvrir jvisualvm sur la ligne de commande et voyez.

    répondre
    0
  • Annulerrépondre