먼저 코드를 살펴보겠습니다:
(권장 튜토리얼: java 입문 튜토리얼)
package cn.liang.jvm; public class SimpleHeap { private int id; public SimpleHeap(int id){ this.id = id; } public void show(){ System.out.println("My ID is " + id); } public static void main(String[] args) { SimpleHeap s1 = new SimpleHeap(1); SimpleHeap s2 = new SimpleHeap(2); s1.show(); s2.show(); } }
관계 다이어그램:
(추천 비디오 튜토리얼: java 비디오 튜토리얼)
SimpleHeap 인스턴스 자체는 힙 메모리에 할당됨
SimpleHeap 클래스를 설명하는 정보는 메소드 영역에 저장됨
main() 함수의 s1 및 s2 지역 변수는 Java 스택 메모리에 저장되며 두 개를 가리킴 힙 메모리 인스턴스
힙 영역:
1. 모든 개체가 저장되며 각 개체에는 해당 클래스에 대한 정보가 포함됩니다. (클래스의 목적은 작업 명령을 얻는 것입니다.)
2. JVM에는 모든 스레드가 공유하는 힙 영역(힙)이 하나만 있습니다. 기본 유형 및 객체 참조는 힙에 저장되지 않으며 객체 자체만 저장됩니다.
스택 영역:
1. 각 스레드에는 기본 데이터 유형의 객체와 사용자 정의 객체에 대한 참조만 스택에 저장됩니다.
2. 스레드 스택의 데이터(기본 유형 및 객체 참조)는 비공개이며 다른 스택에서 액세스할 수 없습니다.
3. 스택은 기본형 변수 영역, 실행 환경 컨텍스트, 작업 명령 영역(저장소 작업 명령)의 세 부분으로 나뉩니다.
메서드 영역:
1. 정적 영역이라고도 하며 힙과 마찬가지로 모든 스레드에서 공유됩니다. 메소드 영역에는 모든 클래스 및 정적 변수가 포함됩니다.
2. 메소드 영역에는 클래스 및 정적 변수와 같이 전체 프로그램에서 항상 고유한 요소가 포함됩니다.
위 내용은 스택 메모리, 힙 메모리, 메소드 영역 간의 관계 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!