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

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

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

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

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

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

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

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

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(4)
Ty80

ここでのキャッシュの定義は広すぎるため、曖昧さが生じる可能性があります。これを見てください lz

いいねを押す +0
Peter_Zhu
  1. Java 仮想マシンの仕様では、さまざまなハードウェアやオペレーティング システムのメモリの違いを保護して、クロスプラットフォームのメモリ アクセス効果を実現する Java メモリ モデルを定義しています。

  2. より良い実行パフォーマンスを得るために、Java メモリ モデルは、実行エンジンがプロセッサの特定のキャッシュを使用したり、メイン メモリ (RAM と比較できますが、RAM の一部であるキャッシュ) と対話することを制限しません。作業メモリ (キャッシュと比較でき、仮想マシン メモリの一部でもあります) はスレッドにとってプライベートです。

  3. ワーキングメモリとメインメモリの分割は、Java ヒープ、スタック、メソッド領域の分割とは異なります。両者がかろうじて一致する場合、メインメモリはインスタンスデータ部分として理解できます。ヒープ内にあり、作業メモリはスタック内の領域の一部に相当します

-----引用

いいねを押す +0
Peter_Zhu

スレッドにはスレッド スタックがあり、メソッド呼び出しはスタック フレームです。スタックフレームは、ローカル変数領域、オペランドスタック、フレームデータ領域に分かれています。
ワーキングメモリとはローカル変数領域のデータであることが分かります。

いいねを押す +0
大家讲道理

@wlingxiao は、『JAVA 仮想マシンの詳細な理解』、第 2 版、12.3.1 メイン メモリとワーキング メモリで次のように述べています

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート