인프런 커뮤니티 질문&답변

개발한입님의 프로필 이미지

작성한 질문수

더 자바, 코드를 조작하는 다양한 방법

모자에서 토끼를 꺼내는 마술

바이트버디 Unloading 관련해서 질문드립니다.

작성

·

285

0

먼저, 자바8과 스프링 강의등 다 잘 수강을 마쳤습니다.

항상 좋은 강의 만들어주셔서 감사하게 보고있습니다 :)

본론으로 들어가 Java Code Hot Deploy와 관련되서 여기저기 찾아보다가 결국에 백기선님 강의까지 도달했는데요.

제가 알고 있기로는 자바의 BootStrap이나 Extension 그리고 System나 Application Class Loader의 경우 Unloading 기능이 없는 것으로 알고 있습니다.

바이트 버디와 말씀하신 부분 중에서도 궁금했던 부분이 언로딩 기능인데요.

모자라는 클래스를 Application Class Loader와 바이트 버디가 만들어주는 Class Loader에서 로드해주기 때문에 사실상 같은 이름이지만 JVM 상에서는 2개라고 말씀해주셨던 부분이 있었습니다.

제 생각은 그렇다면 바이트 버디가 Unloading과 Reloading이 가능한 이유는 바이트 버디가 자체적으로 Class Loader를 갖고 있기 때문에 JVM 내부에 있는 클래스 로더의 Unloading이 안된다는 단점을 상쇄시킨 것이라고 생각하면 될까요?

답변 2

1

백기선님의 프로필 이미지
백기선
지식공유자

음.. 글쎄요. 우선 클래스 릴로딩 같은 경우는 문서에 따르면 별도의 클래스로더가 아니라 javaagnet를 사용한 JVM의 HotSwap 기능을 사용한다고 나와있네요. 그리고 바이트버디에서 말하는 Unloaded는 신수옹님이 말씀하시는 Unloading이 아니라 클래스로더가 로딩하지 않은 클래스르를 말하는 것 같습니다.

0

개발한입님의 프로필 이미지
개발한입
질문자

아 그렇군요 javaagent 핫스왑이랑 바이트버디 문서를 정독을 해봐야겠습니다. 감사합니다 :)