개발놀이터

면접 준비 : 정적 (static) 본문

CS 지식/면접준비

면접 준비 : 정적 (static)

마늘냄새폴폴 2022. 7. 28. 08:50

Q. 정적 (static) 이란 무엇인가요?

A. static은 클래스 변수라고 하고 정적 변수라고도 합니다.  static은 클래스로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리됩니다. static 키워드를 사용해서 생성된 정적 멤버들은 PermGen이나 Metaspace에 저장되고 저장된 메모리는 모든 객체가 공유하면서 하나의 멤버를 어디서든지 참조할 수 있다는 장점을 가지고 있습니다. 하지만 GC의 관리 영역 밖에 있기 때문에 프로그램 종료시까지 메모리가 할당된 채로 남아있습니다. 따라서 너무 남발하면 시스템 성능에 악영향을 미칠 수 있습니다.

 

꼬리질문

Q. PermGen이나 Metaspace에 대해 설명해주세요.

A. PermGen이나 Metaspace모두 메타정보를 모아두는 공간입니다. PermGen은 자바7까지 사용하던 메모리 공간이고 Metaspace는 자바8부터 사용하는 메모리 공간입니다. 둘의 차이점은 PermGen은 힙영역에 포함되지만 Metaspace는 힙영역에 포함되지 않고 NativeMemory에 포함되는 메모리 공간입니다.

 

https://coding-review.tistory.com/135

 

정적 (static)

static Java에서 static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다. 이를 정확히 이해하기 위해서는 메모리 영역에 대한 이해가 필요하다. 일

coding-review.tistory.com

 

https://coding-review.tistory.com/137?category=986612 

 

자바의 Metaspace

Metaspace Java8부터 JVM의 메모리 영역 중 PermGen이라 부르는 Permanent Generation 메모리 영역이 사라지고 Metaspace 영역이 생겼다. Metaspace는 간단히 말해 Java의 클래스 로더가 로드한 클래스들의 메타데..

coding-review.tistory.com