변수와 메모리

김지수·2023년 6월 26일

| 스택 메모리

: 함수에서 사용하고 함수가 호출되면 함수의 지역변수들이 쓰는 메모리

| 힙 메모리

: 필요할 때 동적으로 할당되는 메모리


  • 생성된 인스턴스가 동적 메모리(힙 메모리)에 할당됨
  • C나 C++에서는 사용한 동적 메모리를 프로그래머가 해제시켜야 함( free()나 delete 이용 )
  • 자바에서는 Garbage Collector가 주기적으로 사용하지 않는 메모리를 수거
  • 하나의 클래스에서 여러 개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨

(인스턴스) 객체 생성 -> 힙 메모리에 올라감 -> 각 객체는 서로 다른 값(참조값)을 갖는다.


  • 인스턴스 변수힙 메모리에 올라간다
  • Static 변수데이터 영역 메모리에 올라간다 : Static 변수(클래스 변수)는 클래스 안에 있지만 클래스 생성과 상관 없이 프로그램이 로드될 때 이미 생성이 되어 있다. 따라서 참조변수가 아니라 클래스 이름으로 호출해야 한다. 그래서 Static 변수는 클래스 변수라고 하기도 한다.

=> 인스턴스 변수 안에선 Static 변수를 사용할 수 있지만,
Static 변수 안에선 인스턴스 변수를 사용할 수 없다.

왜냐?

  • Static 변수는 이미 생성되어서 메모리에 올라와 있으므로 인스턴스 변수 안에서 사용 가능하다.
  • 인스턴스 변수는 메모리가 생성되었는지 보장되지 않으므로 static 변수(클래스 변수) 안에서 사용할 수 없다.
profile
안녕하세요

0개의 댓글