본문 바로가기
728x90
반응형

자바를 공부하던 도중 비정적(non-static) 변수와 정적(static) 변수에 대해 RAM에 각각 어떻게 배치되는지에 대한 기록을 적어보도록 하겠다.

  • 비정적(non-static) 멤버 변수 (인스턴스 변수):
    • 비정적(non-static) 멤버 변수는 클래스의 각 인스턴스(객체)마다 별도의 메모리 공간에 저장된다.
    • 각 객체(인스턴스)는 해당 변수의 값을 독립적으로 가질 수 있습니다.
    • 인스턴스 변수는 객체가 생성될 때 초기화되며, 객체의 생명주기 동안 유지됩니다.
더보기

개별 메모리 공간: 비정적 멤버 변수는 클래스의 각 인스턴스(객체)마다 별도의 메모리 공간에 저장된다. 이것은 객체마다 독립적인 변수 값을 가질 수 있음을 의미하는데, 예를 들어, 여러 대의 자동차 객체가 있을 때, 각 자동차 객체는 자신의 속도, 색상, 브레이크 메서드 등과 같은 속성을 갖게 됩니다.

생명주기 동안 유지: 인스턴스 변수는 객체가 생성될 때 초기화되며 객체의 생명주기 동안 유지된다. 객체의 생성과 소멸과 관련이 있으며, 객체 각각이 변수의 값을 설정하고 변경할 수 있다.

 

    1.  
    정적(static) 멤버 변수 (클래스 변수):
    • 정적(static) 멤버 변수는 클래스 수준에서 공유되며 클래스 자체와 연결됩니다.
    • 모든 객체(인스턴스)에서 해당 변수는 동일한 메모리 위치를 참조합니다.
    • 정적(static) 변수는 클래스가 로드될 때 초기화되며 프로그램이 실행되는 동안 계속해서 유지됩니다.
더보기

클래스 수준 공유: 정적 멤버 변수는 클래스 수준에서 공유되며 모든 객체에서 해당 변수는 동일한 메모리 위치를 참조한다. 이것은 클래스의 모든 인스턴스 간에 변수 값이 공유됨을 의미한다.

클래스 로딩 시 초기화: 정적 변수는 클래스가 로드될 때 초기화된다. 이 변수는 프로그램이 실행될 때 클래스의 인스턴스화와 상관없이 이미 초기화되어 있고, 따라서 객체의 생성과 관련이 없으며, 클래스 자체와 관련이 있다.

 

728x90
반응형