>source

volatile에 대해 읽기 시작했습니다. 스레드가 자체 스택 대신 메인 메모리에서 변수를 읽을 것이라는 것을 알게되었습니다.

스레드 스택 내의 오브젝트가 JVM 힙을 가리키는 참조 유형 오브젝트에 대한 논리가 힙 내부의 개체를 수정하면 스택 내부의 참조가 새 객체를 가리 킵니다.

그러나 기본 유형의 경우 값은 스택 내부에 직접 저장되며 힙 내에 트랙이 없으므로이 경우 메인 메모리에 액세스하는 방법에 대해 어떻게 이야기 할 것인가?

이는 기본 변수를 휘발성으로 선언 할 때 각 스레드 스택 대신 힙에 저장 될 것임을 의미합니까?

"그러나 원시 유형의 경우, 값은 스택 안에 직접 저장됩니다."라운지 변수에 해당하지만 휘발성은 로컬 변수에만 적용 할 수있는 것이 아닙니다. 힙에서 힙을 가져와 필드 값을 읽어야합니다.

Andy Turner2021-09-18 18:58:29

원시 변수가 Java에 저장되는 경우 구현 세부 사항입니다. 즉, 힙이나 스택에 저장되어 있는지 여부를 알 필요가 없어야합니다. 프로그래밍 작업에 아무런 영향을 미치지 않아야합니다.

Robert Harvey2021-09-18 19:00:12

귀하의 이해 수준을 이해하기 위해서 : Google /Duckduckgo로 쉽게 발견 할 수있는 웹에 많은 휘발성 설명자가 있습니다. 이는 이미 읽었습니다 (물론 뚜껑을 덮고 있음). 이 (꽤 잘 문서화 된) 키워드의 행동에 대해 물어보십시오.

Mike 'Pomax' Kamermans2021-09-18 19:00:50

@andyturner 고마워요, 나는 그것에주의를 기울이지 않았습니다. 이제는 의미가 있습니다.

clorzs2021-09-18 19:04:23

@andyturner : 여기에 주어진 예제는 모두 정적 휘발성을 나타냅니다. 힙에 저장되는 것이 확신합니까?

Robert Harvey2021-09-18 19:05:43
  • 이전 sequence : 시퀀스 번호로 간격을 찾는 것
  • 다음 java : Slick2D Weird Bug, 음악 (String Ref, Boolean StreamingHint)은 두 번째로 작동합니다.