IT/SPRING BOOT

1.2.2 클래스 로더

2T1 2022. 12. 1. 18:58

자바 코드를 작성한 후 컴파일 하면 해당 코드는 JVM에서 실행행 가능한 상태가 됨. JVM이 자바 클래스를 실행(동적 로드)하기 위해서 클래스를 로딩할때 그 과정을 수행하는 역할을 한다. (JRE의 일부)

 

 

클래스 로더 구조 / 출처 - https://blueyikim.tistory.com/37

부트스트랩 클래스 로더는 JVM 런타임 실행을 위해 기반이 되는 파일을 로드

부트스트랩 클래스 로더의 로딩이 끝나면 확장 클래스 로더가 Object(자바 최상위 객체)를 포함한 자바 API를 로드

확장 로더의 로드가 끝나면 시스템 클래스 로더가 Classpath에 포함된 클래스들을 로드

 

 

사용자는 classpath에만 접근 가능. 보통 독립적인 영역이 필요한 WAS의 경우, system class loader 하위에 사용자 정의 로더를 만들어 사용.

  • 구조가 계층적 : 상위 클래스 로더에서 하위 클래스 로더를 갖는 방식.
  • 클래스 로딩을 위임 가능
  • 가시적인 규약이 있음 : 클래스를 로딩할 때 가능한 범위. 부모 클래스 로더는 자식 클래스 로더가 로딩한 클래스를 알 수 없지만 자식은 부모 클래스 로더가 로딩한 클래스를 찾을 수 있음
  • 클래스 언로딩 불가능 : 클래스 로더가 로딩한 클래스를 언로딩 할 수 없음. (Garbage Collector 또는 WAS 재시작에 초기화)

 

 

참고했던 블로그에 더욱 자세하게 내용이 적혀있다. 

 

https://blueyikim.tistory.com/37

 

[개요] 클래스 로더(Class Loader) 이해

1. 자바 언어에서 클래스 로더(Class Loader) 정의 및 특징 클래스 로더(Class Loader)는 컴파일 시점(Compile Time)이 아닌 실행 시점(Run Time)에 클래스(Class)를 로딩할 수 있게 해주는 기술이다. 예를 들어, Cl

blueyikim.tistory.com