>Java >Java시작하기 >스택 메모리, 힙 메모리, 메소드 영역 간의 관계 분석

스택 메모리, 힙 메모리, 메소드 영역 간의 관계 분석

王林
王林앞으로
2020-07-30 16:37:282604검색

스택 메모리, 힙 메모리, 메소드 영역 간의 관계 분석

먼저 코드를 살펴보겠습니다:

(권장 튜토리얼: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제