1. 자바 메모리 영역
자바의 메모리는 프로그램 실행 시 데이터의 저장과 관리를 담당하는 영역으로 나뉩니다. 각 영역의 역할과 특징은 아래와 같습니다
1) 메서드 영역 (Method Area)
- 역할: 프로그램 실행에 필요한 클래스 수준의 데이터를 저장.
- 특징:
- 여러 스레드에서 공유되는 영역.
- 클래스가 로드될 때 생성되며, JVM 종료 시까지 유지.
- 구성 요소:
- 클래스 정보: 클래스의 바이트코드, 필드, 메서드, 생성자 정보.
static 영역: 클래스의 static 변수 저장.
- 런타임 상수 풀: 프로그램에서 사용하는 상수 데이터 저장.
2) 스택 영역 (Stack Area)
- 역할: 메서드 호출과 관련된 데이터를 관리.
- 특징:
- 메서드 실행 시마다 스택 프레임이 생성되고, 실행이 끝나면 제거.
- 지역 변수, 호출 정보, 중간 연산 결과 저장.
- 각 스레드마다 독립적인 스택을 가짐.
- 동작:
- 메서드 호출 시 스택 프레임 추가 → 메서드 종료 시 제거.
3) 힙 영역 (Heap Area)
- 역할: 객체와 배열을 저장하는 영역.
- 특징:
- 동적으로 생성된 데이터가 저장되며, 가비지 컬렉션(GC)에 의해 관리.
- JVM의 메모리 중 가장 큰 영역.
- 객체는 참조가 사라지면 가비지 컬렉션에 의해 자동으로 제거.
2. 정적 메서드 (Static Method)
1) 정적 메서드 사용 규칙
static 변수와 메서드만 사용 가능:
- 정적 메서드는 객체와 무관하게 호출되므로, 인스턴스 변수/메서드 사용 불가.
- 정적 데이터(
static 변수, 메서드)만 사용할 수 있다.
- 클래스명으로 호출:
- 정적 메서드는 클래스 이름으로 호출 가능.
- 예:
ClassName.methodName()
- 인스턴스를 통한 호출 지양:
- 정적 메서드는 객체와 독립적이므로, 객체로 호출하면 코드 가독성이 떨어진다.