자바 메모리 구조와 static

Xtraa·2024년 12월 20일

Java 기본 개념

목록 보기
4/7

1. 자바 메모리 영역

자바의 메모리는 프로그램 실행 시 데이터의 저장과 관리를 담당하는 영역으로 나뉩니다. 각 영역의 역할과 특징은 아래와 같습니다

1) 메서드 영역 (Method Area)

  • 역할: 프로그램 실행에 필요한 클래스 수준의 데이터를 저장.
  • 특징:
    • 여러 스레드에서 공유되는 영역.
    • 클래스가 로드될 때 생성되며, JVM 종료 시까지 유지.
  • 구성 요소:
    • 클래스 정보: 클래스의 바이트코드, 필드, 메서드, 생성자 정보.
    • static 영역: 클래스의 static 변수 저장.
    • 런타임 상수 풀: 프로그램에서 사용하는 상수 데이터 저장.

2) 스택 영역 (Stack Area)

  • 역할: 메서드 호출과 관련된 데이터를 관리.
  • 특징:
    • 메서드 실행 시마다 스택 프레임이 생성되고, 실행이 끝나면 제거.
    • 지역 변수, 호출 정보, 중간 연산 결과 저장.
    • 각 스레드마다 독립적인 스택을 가짐.
  • 동작:
    • 메서드 호출 시 스택 프레임 추가 → 메서드 종료 시 제거.

3) 힙 영역 (Heap Area)

  • 역할: 객체와 배열을 저장하는 영역.
  • 특징:
    • 동적으로 생성된 데이터가 저장되며, 가비지 컬렉션(GC)에 의해 관리.
    • JVM의 메모리 중 가장 큰 영역.
    • 객체는 참조가 사라지면 가비지 컬렉션에 의해 자동으로 제거.

2. 정적 메서드 (Static Method)

1) 정적 메서드 사용 규칙

  1. static 변수와 메서드만 사용 가능:
    • 정적 메서드는 객체와 무관하게 호출되므로, 인스턴스 변수/메서드 사용 불가.
    • 정적 데이터(static 변수, 메서드)만 사용할 수 있다.
  2. 클래스명으로 호출:
    • 정적 메서드는 클래스 이름으로 호출 가능.
    • 예: ClassName.methodName()
  3. 인스턴스를 통한 호출 지양:
    • 정적 메서드는 객체와 독립적이므로, 객체로 호출하면 코드 가독성이 떨어진다.
profile
https://xtraa.notion.site/Xtraa-ed48ac432d354d01b5bf5b0da5ec94a9?pvs=4

0개의 댓글