JAVA JVM 클래스로더

자바 코드를 작성한 후에 컴파일을 하면 해당 코드는 JVM 위에서 실행 가능한 상태가 된다. 이때 JVM이 클래스를 실행하기 위해서는 클래스를 로딩해와야하는데, 그 역할을 해주는 친구가 클래스 로더다.

클래스 로더의 특징

  • 계층적
  • 클래스 로딩 위임 가능
  • 가시적 규약 = 클래스를 로딩할 때 가능한 범위 존재 자식 클래스 로더는 로딩 위임을 통해서 부모 클래스 로더가 로딩한 클래스를 찾을 수 있지만, 부모 클래스 로더는 자식 클래스 로더가 뭘 로딩했는지 모른다.
  • 클래스 언로딩 불가능 클래스 로더로 로딩한 클래스를 언로딩할 수 없다. 가비지 컬렉터가 동작하거나 WAS 재시작으로 언로딩할 수 있다.

클래스 로더의 계층

  • 부트스트랩 로더 JVM 런타임 실행을 위해 기반이 되는 파일 로드 rt.jar 파일과 연관이 있다.
  • 확장 클래스 로더 환경 변수로 지정된 폴더에 있는 클래스 파일을 로딩한다. Object를 포함한 Java API 등을 여기서 로드한다.
  • 시스템 클래스 로더 클래스패스에 포함된 클래스들을 로드한다. 사용자는 시스템 클래스 로더가 로드하는 클래스 패스 영역에만 접근할 수 있다.
  • 사용자 정의 클래스 로더 웹 어플리케이션 클래스 로더는 사용자 정의 클래스 로더에 해당한다.


minzoovv
Written by@minzoovv
성장하고 있는 개바라기 입니다 :D

GitHubInstagram