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

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

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

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

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

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

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

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

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(4)
Ty80

여기서 캐시의 정의는 너무 광범위하여 모호성을 유발할 수 있습니다. 이거 좀 보세요ㅋㅋㅋ

Peter_Zhu
  1. Java 가상 머신 사양은 다양한 하드웨어와 운영 체제의 메모리 차이를 보호하여 크로스 플랫폼 메모리 액세스 효과를 달성하는 Java 메모리 모델을 정의합니다.

  2. 더 나은 실행 성능을 얻기 위해 Java 메모리 모델은 실행 엔진이 프로세서의 특정 캐시나 캐시를 사용하여 주 메모리(RAM과 비교할 수 있지만 메모리의 일부)와 상호 작용하는 것을 제한하지 않습니다. 가상 머신 메모리) 작업 메모리(캐시와 비교할 수 있으며 가상 머신 메모리의 일부이기도 함)는 스레드 전용입니다.

  3. 작업 메모리와 메인 메모리의 구분은 Java 힙, 스택, 메소드 영역의 구분과 다릅니다. 둘은 거의 일치하지 않는다면 메인 메모리는 인스턴스 데이터 부분으로 이해될 수 있습니다. 힙에 있고 작업 메모리는 스택 영역의 일부에 해당합니다

-----인용문<<JAVA 가상 머신에 대한 깊은 이해>>

Peter_Zhu

스레드에는 스레드 스택이 있고 메서드 호출은 스택 프레임입니다. 스택 프레임은 로컬 변수 영역, 피연산자 스택 및 프레임 데이터 영역으로 구분됩니다.
작업 메모리는 로컬 변수 영역에 있는 데이터라고 이해하시면 됩니다.

大家讲道理

@wlingxiao는 "JAVA 가상 머신에 대한 심층적인 이해", 제2판, 12.3.1 주 메모리 및 작업 메모리에서 말했습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿