본문 바로가기
Programming/Java

자바에서의 객체 관리 2: 각종 변수들의 생성과 사용

by lucid_07 2023. 11. 27.
반응형

클래스정보의 등록

 

Java 8부터 적용된 Metaspace

Java Heap은 JVM이 관리하는 메모리, native memory는 운영체제에서 관리하는 메모리이다.

이 메모리에는 처음 프로그램이 실행될 때 클래스 정보들이 올라가게 된다.

 

소스 코드, 클래스 파일 자체는 정적이다.

HDD나 SSD의 경우 RAM보다 속도가 느리기때문에 매번 보조기억장치에서 이를 읽어들이는 것은 성능을 저하시킨다. 따라서 클래스 정보는 처음 사용될 때 메모리에 그 정보를 올리고 필요할 때마다 가져오는 것이다.

→ 이미 클래스에 대한 정보를 PERM 혹은 Metaspace에 올려두고, 객체가 생성될 때마다 사용하는 것이다.

 

Java에서 메타스페이스를 사용하여 클래스를 관리하고 여기에서 객체가 생성되는 방법

 

Static 정보의 생성

Java 7까지는 non-heap영역, 8 이상부터는 heap에 저장한다.

클래스가 로딩될 때 한 번 메모리에 올라가 초기화된다.

 

객체의 생성

  • new 연산자를 사용할 때마다 이미 메모리에 올라가 있는 클래스 정보를 이용해 Java heap에 인스턴스를 생성한다.
  • 이후 참조 변수를  사용해 계속해서 이를 참조하는 식으로 데이터를 다루게된다: 참조 변수는 Java의 stack메모리에 생성된다.
  • 인스턴스가 더이상 참조되지 않을때, GC가 메모리를 관리한다.

 

시리즈

자바에서의 객체 관리 1: 인자 전달

 

참고 자료

https://www.programmersought.com/article/4905216600/

반응형