Computer Science/Java / / 2024. 5. 5. 20:50

Class Loading

이전 블로그 글에서 static Inner Class 에 관해 설명해드린 적 있습니다.

왜 Inner Class 를 사용할 때, static 을 사용해야 하는지에 관련해서 조금 더 딥하게 들어가볼 예정입니다.

그러기 위해서는 JVM 이 클래스를 로딩하는 방법 부터 알아보려고 합니다

Class Loader 란?

JAVA 는 .java 파일을 Java Compiler를 통해 .class 파일로 만들고 이 클래스 파일을 Class Loader를 통해 동적으로 읽습니다. 이러한 과정은 JVM 의 메모리 영역인 Runtime Data Area 에 배치하는 작업을 의미합니다.

클래스 로더는 다음과 같은 3 가지 단계로 클래스 파일을 읽습니다.

  1. Loading: .class 파일을 가져와 JVM 메모리에 불러 들입니다.(매우 짧은 시간 안에 이루어 집니다)
  2. Linking: 클래스 파일을 사용하기 위해 검증하는 과정입니다.
  3. Initialization: 클래스 파일에 존재하는 변수들을 적절한 값으롤 초기화 시켜 줍니다.

이때, 클래스를 메모리에 전부 Loading하지 않고, 애플리케이션에서 클래스를 호출할 때 동적으로 메모리에 올리는 Lazy Loading을 사용하여 조금 더 효울적으로 메모리를 관리하게 됩니다.

또한 Class Loader 내부적으로 초기화 단계에서 동기화를 해주기 때문에 멀티쓰레드 환경에서도 안전하게 사용할 수 있습니다.

 


reference

https://interviewnoodle.com/jvm-architecture-71fd37e7826e

https://inpa.tistory.com/entry/JAVA-☕-클래스는-언제-메모리에-로딩-초기화-되는가-❓

'Computer Science > Java' 카테고리의 다른 글

Inner Class  (0) 2024.04.28
JAVA 8 vs JAVA 11 vs JAVA 17  (2) 2024.04.21
JAVA record란?  (1) 2024.04.03
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유