Open jhp2014 opened 8 months ago
핵심 Class file은 결국 Constant Pool 을 활용해 Class에 대한 메타정보를 보유하게 된다.
u4
,u2
는 크기 이다. 세 번째 그림을 확인하면 Array의 Instance 형태를 확인할 수 있다.
Java Class file의 항목이 String 값을 그대로 들고 있는 것이 아닌, Constant Pool의 인덱스 값을 들고 있다.
.Java
파일이 .class
파일로 변환되면 이제 JVM에서 실행 될 수 있다.
JVM에서 실행 되기 위해 Class Loader가 .class
파일을 JVM 안으로 읽어 와야 한다.
또한, Java의 .class
파일은 compile 시 Linking 되지 않는다. 따라서 .class
파일 실행 시 필요한 Class 들을 load 해서 Linking을 해야한다.
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,
rt.jar
and other core libraries located in the $JAVA_HOME/jre/lib directory. This bootstrap class loader is part of the core JVM and is written in native code
The extension class loader loads from the JDK extensions directory,
내가 사용하는 라이브러리를 여기에 두어도 되지만, ClassPath 에 두는 것이 더 좋은 방법인 것 같다.
It loads files found in the classpath environment variable, -classpath, or -cp command line option.
1) Class Loader 가 Class 를 Load 한다.
2) .class
파일을 검증하고, preperation 하고 sybolic reference
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