사진과코딩
[Java] JVM 메모리 본문
메모리 영역
- 메모리의 영역에는 메소드 영역, 힙 영역, 스택 영역이 있다
- 메소드 영역(정적 영역)
1. 파일을 읽은 내용을 저장
2. 클래스별 상수(final), 정적필드(static 변수), 메소드(method), 생성자 코드(constructor)등이 저장
3. 어디서는 접근이 가능한 것들을 저장
4. JVM 종료(프로그램 종료)시 메모리에서 해제된다. - 스택 영역
1. 기본 자료형, 지역변수, 매개변수가 저장되는 메모리.
2. 메소드를 호출할 때마다 생성되는 프레임이 저장
3. 메소드 호출이 끝나면 자동으로 제거된다 - 힙 영역
1. 객체가 생성되는 영역, new 키워드로 인스턴스를 생성할 떄 생성된 객체는 Heap에 저장, Stack에는 생성된 주소값이 저장 된다.
2. 실제 데이터가 저장되는 공간
3. 스택 영역의 참조 타입 변수는 힙 영역의 실제 데이터에 대한 참조 값을 가지고 있다.
4. 참조형 데이터 타입이 저장된다. (String, 배열(array), enum, class, interface), Object
5. 호출이 종료되도 삭제되지 않는다. -> GC(가비지 컬렉터)에 의해 메모리에서 해제된다.
6. Heap 영역은 모든 쓰레드들이 공유할 수 있는 메모리 공간이다. 즉, 쓰레드간의 동기화 문제가 발생할 수 있다.
'Java' 카테고리의 다른 글
[Java] 싱글톤 패턴 (0) | 2024.06.09 |
---|---|
[Java] 객체지향 프로그래밍 (1) | 2024.06.09 |
[Java] 참조 타입 (0) | 2024.06.09 |
[Java] 중첩 반복문 종료 (0) | 2024.06.09 |
[Java]형식화된 문자열 (0) | 2024.06.09 |