iamabear09 / WIL

What I learned :: 공부 내용 정리 및 요약
0 stars 0 forks source link

JVM #14

Open jhp2014 opened 8 months ago

jhp2014 commented 8 months ago

Class file format

https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html

Class Loader

https://stackoverflow.com/questions/2424604/what-is-a-java-classloader https://www.baeldung.com/java-classloaders

https://d2.naver.com/helloworld/1230

jhp2014 commented 8 months ago

Java Class file format

핵심 Class file은 결국 Constant Pool 을 활용해 Class에 대한 메타정보를 보유하게 된다.


image

u4 , u2 는 크기 이다. 세 번째 그림을 확인하면 Array의 Instance 형태를 확인할 수 있다.



📌 Constant Pool 은 어떻게 사용 되는가..?

image

Java Class file의 항목이 String 값을 그대로 들고 있는 것이 아닌, Constant Pool의 인덱스 값을 들고 있다.

jhp2014 commented 8 months ago

JVM 의 Class Loader



Class Loader 특징

bootstrap-classloader

Java classes are loaded by an instance of java.lang.ClassLoader. However, class loaders are classes themselves. So the question is, who loads the java.lang.ClassLoader itself?

It’s mainly responsible for loading JDK internal classes,

This bootstrap class loader is part of the core JVM and is written in native code


extension-classloader

The extension class loader loads from the JDK extensions directory,

내가 사용하는 라이브러리를 여기에 두어도 되지만, ClassPath 에 두는 것이 더 좋은 방법인 것 같다.


system-classloader

It loads files found in the classpath environment variable, -classpath, or -cp command line option.

iamabear09 commented 8 months ago

JVM 동작

1) Class Loader 가 Class 를 Load 한다.

2) .class 파일을 검증하고, preperation 하고 sybolic reference