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

     

     

    🚩 Static 키워드는 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미하며, 이는 RuntimeData Area의 메모리 구조와 연관되어 있습니다.

     

     

    일반적으로 만드는 Class는 Static영역에 생성되고 , new 연산자를 통해 생성한 객체는 Heap영역에 생성됩니다.

    또한, Static은 모든 객체가 공유하는 메모리라는 장점이 있습니다. 하지만,  CG의 대상이 되는 Heap영역에 생성된 객에와는 달리 Static에서 생성된 객체는 GC의 대상이 아니기 때문에 남발하게 된다면 시스템의 퍼포먼스에 악영향을 줄 수 있습니다.

     

     

    클래스에서 공통으로 사용하는 변수를 static 변수로 선언합니다.

     

     

    static 변수란 다른 용어로 '정적 변수'라고도 합니다.다른 멤버 변수처럼 인스턴스가 생성될 때마다 새로 생성되는 변수가 아니며 static 변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당됩니다. 그 값은 모든 인스턴스가 공유합니다.

     

     

    이런 이유 때문에 static 변수를 클래스에 기반한 변수라고해서 클래스 변수라고도 합니다.

    즉, 일반 멤버 변수는 인스턴스가 생성될 때마다 새로 생성되어 각각 다른 이름을 가지지만 static으로 선언한 변수는 인스턴스 생성과 상관없이 먼저 생성되고 그 값을 모든 인스턴스가 공유하게 되는 것입니다.

     


     

     

    728x90

    댓글