현재 스레드에서 실행되는 바이트코드의 줄 번호 표시입니다.
은 스레드 전용이며 스레드와 동일한 수명 주기를 갖습니다. 로컬변수테이블, 피연산자 스택, 동적 연결 목록, 메서드 종료 및 기타 정보를 저장하는 데 사용됩니다.
로컬 변수 테이블 저장 내용:
기본 데이터 유형(boolean, byte, char, short, int, float, long, double)
객체 참조(상수에 저장되는 기호 참조와 다름) pool )
returnAddress 유형(바이트코드 명령어의 주소를 가리킴)
64비트 long long 및 double 유형 데이터는 2개의 로컬 변수 공간(슬롯)을 차지하고 나머지는 1개의 슬롯을 차지합니다.
두 가지 예외:
StackOverflowError: 스레드에서 요청한 스택 깊이 > 가상 머신에서 허용하는 깊이
OutOfMemoryError: 동적 확장 중에 충분한 메모리를 적용할 수 없습니다.
가상 머신 스택과 유사하지만, 네이티브 메서드 스택은 네이티브 메서드를 제공하는 반면, 가상 머신 스택은 Java 메서드를 제공한다는 점이 다릅니다.
모든 스레드에서 공유되며 객체 인스턴스와 어레이를 저장합니다.
가비지 컬렉터가 관리하는 주요 영역은 "GC Heap(Garbage Collected Heap)"이라고도 합니다.
신세대(Eden 공간, From Survivor 공간, To Survivor 공간)와 Old 세대가 포함됩니다.
여러 스레드 전용 할당 버퍼를 분할할 수 있습니다(Thread Local Allocation Buffer, TLAB).
물리적으로는 불연속적일 수 있지만 논리적으로는 연속적일 수 있습니다.
확장 가능: -Xmx 및 -Xms 컨트롤. -Xmx 최대 힙 메모리 크기, -Xms 초기 힙 메모리 크기.
인스턴스 할당을 완료하는 데 사용할 수 있는 메모리가 힙에 없고 더 이상 확장할 수 없는 경우 - OutOfMemoryError
도 모든 스레드에서 공유되며 사용됩니다. 가상 머신 클래스 정보, 상수, 정적 변수, JIT(Just-In-Time) 컴파일러로 컴파일된 코드 및 기타 데이터에 의해 로드된 를 저장합니다.
"영구 세대"라고도 하지만 본질적으로 동일하지는 않습니다.
영구 세대의 상한은 -XX:MaxPermSize입니다.
은 메소드 영역의 일부입니다.
JDK1.4에 새로 추가된 NIO(New Input/Output) 클래스에는 Nativefunction라이브러리를 사용하여 직접 할당할 수 있는 채널 및 버퍼 기반의 I/O 방식이 도입되었습니다. 힙 메모리. Java 힙 크기(-Xmx)에 의해 제한되지 않으므로 각 메모리 영역의 합이 실제 메모리 제한보다 커져 동적 확장 중에 OutOfMemoryError가 발생할 수 있습니다.
세 개의 메모리 영역 1, 2, 3은 각 스레드에 전용입니다.
4와 5는 모든 스레드에 공통됩니다.
6은 5
7의 일부입니다. 가상 머신의 메모리 영역 밖의 다른 물리적 메모리에 속하는 머신 런타임 데이터 영역의 일부
[관련 권장 사항]
2. Java 런타임 코드 예제에 대한 두 가지 유형의 계산 소개
3JDBC 예제 코드를 학습하는 Java 트랜잭션 관리에 대한 자세한 설명
위 내용은 JVM 학습 Java 런타임 데이터 영역의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!