Static 특징 & 변수 비교

devyumi·2024년 6월 19일
0

Java

목록 보기
8/14

자바 메모리 영역

  • JVM 메모리 영역은 총 5개로 구분되며, 해당 문서에서는 Method Area, Heap Area, Stack Area 영역을 다룬다.


Method Area

  • 클래스와 인터페이스 구조, static 변수 및 메서드 등을 저장하는 메모리 영역 (Static Area라고도 불림)

  • 모든 Thread가 자원을 공유함, JVM 당 1개 존재

  • JVM 구동 시작부터 종료까지 유지됨


Heap Area

  • 인스턴스를 생성(new)할 때 동적으로 할당되는 메모리 영역

  • 모든 Thread가 자원을 공유함, JVM 당 1개 존재

  • 참조형 데이터 객체의 실제 데이터가 저장됨

  • Method Area에 로드된 클래스만 생성이 가능함

더 알아볼 것

  • Garbage Collector

Stack Area

  • 메서드가 호출 시 지역변수가 저장되는 메모리 영역

  • 각 Thread가 하나의 Stack 영역을 할당 받음

  • Heap Area에 할당된 객체의 주솟값이 저장됨

  • 메서드 동작이 완료되면 Area에서 소멸됨




Static

  • 호출된 시점부터 데이터를 메모리에 할당하여 프로그램 종료 시까지 데이터를 메모리에 유지하게 하는 키워드

  • 특징
    1) 객체 간 값을 공유하고 싶을 때 사용

    2) 인스턴스를 생성하지 않고 클래스의 필드와 메서드에 접근할 수 있음
    -> static은 클래스 호출 시 Method Area에 데이터가 할당되기 때문에 인스턴스를 생성하지 않아도 접근이 가능해집니다.

    -> non-static의 경우, 객체 내 필드나 메서드에 접근하기 위해서는 객체가 생성된 상태여야 합니다.

    그 이유는 객체를 생성해야지 Heap Area에 인스턴스가 할당될 것이고, 접근 가능한 상태가 되기 때문입니다.


  • 장점: 속도가 빠름 - 객체를 생성하지 않고 메모리에 할당된 값을 바로 사용하기 때문에

  • 단점: 메모리 낭비 - static 키워드를 과용할 경우




클래스 변수 vs 인스턴스 변수 vs 지역 변수




참고

0개의 댓글

관련 채용 정보