Java多线程的工作内存是什么?
PHP中文网
PHP中文网 2017-04-17 17:41:47
0
4
461

Java的内存模型分为主内存,和工作内存。

主内存是所有的线程所共享的,工作内存是每个线程自己有一个,不是共享的。

线程工作时将要用到的变量从主内存拷贝到自己的工作内存,然后在工作内存中进行读和写。

写完之后,可能没被更新到主内存去。导致其他线程从主内存拷贝数据到自己的工作区时,拷贝的不是最新的数据。这就是内存可见性问题。

那么问题来了,Java的工作内存是什么??

百度 "java多线的工作内存是什么“,看了很多博客都说是各种缓存。

但是缓存不是大家都能访问的吗?

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(4)
Ty80

Takrifan cache di sini terlalu luas dan boleh menyebabkan kekaburan. Lihat sahaja lz ini

Peter_Zhu
  1. Spesifikasi mesin maya Java mentakrifkan model memori Java untuk melindungi perbezaan memori pelbagai perkakasan dan sistem pengendalian untuk mencapai kesan akses memori merentas platform.

  2. Untuk mendapatkan prestasi pelaksanaan yang lebih baik, model memori Java tidak menyekat enjin pelaksanaan daripada menggunakan cache atau cache khusus pemproses untuk berinteraksi dengan memori utama (yang boleh dibandingkan dengan RAM, tetapi merupakan sebahagian daripada memori mesin maya). Memori kerja (yang boleh dibandingkan dengan cache dan juga sebahagian daripada memori mesin maya) adalah peribadi kepada benang.

  3. Pembahagian memori kerja dan ingatan utama adalah berbeza daripada bahagian timbunan Java, tindanan dan kawasan kaedah dalam timbunan, dan memori kerja adalah Sepadan dengan sebahagian daripada kawasan dalam timbunan

-----Petikan<<Pemahaman mendalam tentang mesin maya JAVA>>

Peter_Zhu

Benang akan mempunyai tindanan benang dan panggilan kaedah ialah bingkai tindanan. Bingkai tindanan dibahagikan kepada: kawasan pembolehubah setempat, tindanan operan dan kawasan data bingkai.
Anda boleh memahami bahawa memori kerja ialah data dalam kawasan pembolehubah setempat.

大家讲道理

@wlingxiao berkata dalam "Pemahaman Mendalam tentang Mesin Maya JAVA", Edisi Kedua, 12.3.1 Memori Utama dan Memori Berfungsi

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan