인프런 커뮤니티 질문&답변

RapaHello님의 프로필 이미지
RapaHello

작성한 질문수

김영한의 실전 자바 - 기본편

static에 대해서 궁금합니다!!

작성

·

183

1

안녕하세요.

static에 대해 궁금한 것이 있어서 질문을 남깁니다!!

 

static의 생존주기가 메모리에 생성이 되면 Java를 새로 실행이 될 때까지 유지되는 것으로 알고 있어요. 그럼 Heap 영역의 GC처럼 static을 정리해주는 역할을 하는 것이 있을까요? 아니면 개발자가 메모리 누수가 없도록 따로 관리를 해줘야 하나요?

 

이 부분이 궁금합니다~

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. RapaHello님

static 변수와 static 변수가 참조하고 있는 인스턴스를 분리해서 생각해야 합니다. 인스턴스는 힙 영역에 존재하지요.

지역 변수는 해당 메서드가 종료되는 시점에 함께 제거됩니다.

static 변수는 자바가 종료될 때 까지 계속 유지됩니다. 따라서 static 변수가 참조하고 있는 인스턴스는 GC의 대상이 되지 않습니다. 왜냐하면 static 변수가 계속 참조하고 있기 때문이지요.

다만 static 변수에 null을 대입하게 되면 static 변수가 참조하고 있던 인스턴스도 더는 참조하는 곳이 없기 때문에 GC의 대상이 될 수 있습니다. (물론 null 대신에 변수에 다른 참조값을 대입하는 경우에도 기존 인스턴스의 참조가 끊어지고 GC의 대상이 될 수 있습니다.)

감사합니다.

RapaHello님의 프로필 이미지
RapaHello
질문자

답변 감사합니다. 주신 답변을 바탕으로 더 공부해보겠습니다 ^^

RapaHello님의 프로필 이미지
RapaHello

작성한 질문수

질문하기