메모리 구조

    [Java] Java의 메모리 구조, NullPointerException, String

    메모리 사용 영역 1. 메서드 영역 코드에서 사용되는 클래스들을 클래스 로더로 읽음 정적(static) 변수, 정적 메서드 JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역 2. 힙 영역 객체와 배열이 생성되는 영역 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 쓰레기로 취급하고, JVM은 GC를 실행시켜 힙 영역에서 자동으로 제거함 3. 스택 영역 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당됨 메서드를 호출할 때마다 프레임을 추가(push)하고 메소드가 종료되면 해당 프레임을 제거(pop)하는 동작을 수행한다. 기본 타입 변수는 스택 영역에 직접 값을 가지고 있지만, 참조 타입 변수는 값이 아니라 힙 영역이나 메소드 ..