* [??????](#??????) * [1. ?????????](#1-?????????) * [2. Java ??????](#2-java-??????) * [3. ????????](#3-????????) * [4. Java ??](#4-java-??) * [5. ??????](#5-??????) * [6. ???????????](#6-???????????) * [7. ??????](#7-??????) * [???????](#???????) * [1. ?§Ø???????????????](#1-?§Ø???????????????) * [1.1 ???¨¹???](#11-???¨¹???) * [1.2 ?????](#12-?????) * [1.3 ????????](#13-????????) * [1.3.1 ?????](#131-?????) * [1.3.2 ??????](#132-??????) * [1.3.3 ??????](#133-??????) * [1.3.4 ??????](#134-??????) * [1.3 ???????????](#13-???????????) * [1.4 finalize()](#14-finalize) * [2. ?????????](#2-?????????) * [2.1 ??? - ?????](#21-???---?????) * [2.2 ??????](#22-??????) * [2.3 ??? - ??????](#23-???---??????) * [2.4 ????????](#24-????????) * [3. ?????????](#3-?????????) * [3.1 Serial ?????](#31-serial-?????) * [3.2 ParNew ?????](#32-parnew-?????) * [3.3 Parallel Scavenge ?????](#33-parallel-scavenge-?????) * [3.4 Serial Old ?????](#34-serial-old-?????) * [3.5 Parallel Old ?????](#35-parallel-old-?????) * [3.6 CMS ?????](#36-cms-?????) * [3.7 G1 ?????](#37-g1-?????) * [3.8 ?????????????????](#38-?????????????????) * [4. ??????????????](#4-??????????????) * [4.1 ?????? Eden ????](#41-??????-eden-????) * [4.2 ????????????????](#42-????????????????) * [4.3 ??????????????????](#43-??????????????????) * [4.4 ????????????§Ø?](#44-????????????§Ø?) * [4.5 ????????](#45-????????) * [4.6 Full GC ?????????](#46-full-gc-?????????) * [4.6.1 ???? System.gc()](#461-????-systemgc) * [4.6.2 ??????????](#462-??????????) * [4.6.3 ???????????](#463-???????????) * [4.6.4 JDK 1.7 ?????????????????](#464-jdk-17-?????????????????) * [4.6.5 Concurrent Mode Failure](#465-concurrent-mode-failure) * [????????](#????????) * [1 ???????????](#1-???????????) * [2. ?????????](#2-?????????) * [3. ????????](#3-????????) * [3.1 ????](#31-????) * [3.2 ???](#32-???) * [3.3 ???](#33-???) * [3.4 ????](#34-????) * [3.5 ?????](#35-?????) * [4. ???????](#4-???????) * [4.1 ???????????](#41-???????????) * [4.2 ???????????](#42-???????????) * [4.3 ?????????](#43-?????????) * [JVM ????](#jvm-????) * [GC ???????](#gc-???????) * [GC ????????](#gc-????????) # ?????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/dc695f48-4189-4fc7-b950-ed25f6c80f82.jpg) ????????????????§Ö?????????????????? ## 1. ????????? ?????????§Ö????????????????????????????§Ö??? Native ???????????? ## 2. Java ?????? ??? Java ????????§Ö????????????????›¥???????????????????????????????????????????????????????????????????????????????? Java ????????????????????? ???????????????????? 1. ???????????????????????????? StackOverflowError ???? 2. ????§Ø????????????????????—¨????? OutOfMemoryError ???? ## 3. ???????? ?? Java ????????????????????????????????????????????????? ## 4. Java ?? ???§Ø???????????????????µµ ??????????????????????????????"GC ?? "???????????????????????¡Â?????????Java ??????????????????????????????????????? Eden ???From Survivor ???To Survivor ??????? ???????????—¨??????? -Xmx ?? -Xms ???????????????§³?????????????????? OutOfMemoryError ???? ## 5. ?????? ????????????????????????????????????????????????????????????????? ?? Java ??????????????????—¨??????????????????????????????? OutOfMemoryError ???? ????????????????????????????????????????????§Ø??????????????????HotSpot ????????????????????????????????? ## 6. ??????????? ?????????????????????????? ??????Class ????§Ö??????????????????????????????????????????????????????? ???????????????¨´? String ??? intern() ????????????????????? ## 7. ?????? ?? JDK 1.4 ????????? NIO ???????????????????Channel??????????Buffer???? I/O ?????????????? Native ?????????????????—¨??????????›¥?? Java ????? DirectByteBuffer ????????????????????§Ó??????????????§»????????????????????????????? Java ??? Native ???????????????? # ??????? ?????????????????????????????????????????????§Ö???????????????????????????????????????????????????????????????????????? ???????????????? Java ???????????§³? ## 1. ?§Ø??????????????? ### 1.1 ???¨¹??? ???????????????¨¹????????????????????????????????? 1???????§¹????????? 1?? ???¨¹???? 0 ???????????? ?????????????????????????????¨¹??????????? 0?????? GC ????????????? ```java objA.instance = objB; objB.instance = objA; ``` ### 1.2 ????? ??? GC Roots ??????????????????????????????????????????????????????? GC Roots ??????????????? 1. ???????????????? 2. ??????????????????????? 3. ???????§Ö???????????? 4. ?????????????????? ### 1.3 ???????? ????????????¨¹??????§Ø?????????????????????????????????§Ø?????????????????§Ø???????????????¨¢??§Û?? #### 1.3.1 ????? ???????????????????????????????????????????? ```java Object obj = new Object(); ``` #### 1.3.2 ?????? ?????????????????????§Ý???? ```java Object obj = new Object(); SoftReference sf = new SoftReference(obj); obj = null; sf.get(); ``` sf ??? obj ??????????????? sf.get() ??????????????????????????????????????????????????? null?? ????????????????????????????????????????????????????????????????????????????????????????????ÖÎ???????????????????????????????????????§»????? #### 1.3.3 ?????? ??????›Ô??????????????????????????????????????????????????????????????? ```java Object obj = new Object(); WeakReference wf = new WeakReference(obj); obj = null; wf.get(); wf.isEnQueued(); ``` #### 1.3.4 ?????? ?????????????????????????????????????????????????????????????�q??????????????????????????????????????????????????¨´?????¦·???????????????????????????????????????? ```java Object obj = new Object(); PhantomReference pf = new PhantomReference(obj); obj=null; pf.get(); pf.isEnQueued(); ``` ### 1.3 ??????????? ???????????????????????????§Ø??? ?????????????§Ø??????????? ???§Ø????????????????????????????????????????????????§Ø??? 1. ???????§Ö????????????????????? Java ???§Ó??????????¦Ê?????? 2. ???????? ClassLoader ?????????? 3. ???????? java.lang.Class ??????????¦Ê¦Å??????????????????¦Ê¦Å??????????????????? ??????? -Xnoclassgc ???????????????????§Ø??? ???????¡Â??????????CGLib ?? ByteCode ??????????? JSP ??? OSGo ???????????? ClassLoader ????????????????????§Ø????????????????????????? ### 1.4 finalize() ???????????????????????????§Ò????? finalize() ????????????§á???????????¡Â?????????????¡À???????????????? finalize() ???? C++ ???ûy??????????????????????????????? try-finally ????????????????????¡Â??????§Õ?????????????????????????????????????????¨°????¨¢? ## 2. ????????? ### 2.1 ??? - ????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a4248c4b-6c1d-4fb8-a557-86da92d3a294.jpg) ???????????????§Ò??????????? ???? 1. ???????????§¹??????? 2. ???????????? ???????????????????§Ú???? ### 2.2 ?????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e6b733ad-606d-4028-b3e8-83c3a73a3797.jpg) ????œý?????§³???????ï…?????????????ï…??????????????????????????????????????—¨????????¨´?????????????????? ?????????????????????? ??????????????????????????????????????????????????????œý?????§³???????ï…???????????? Eden ?????????§³?? Survior ????????? Eden ??????????? Survivor???????????? Eden ?? Survivor ?§Ý???????????????????????? Survivor ????????????? Eden ?? Survivor??HotSpot ??????? Eden ?? Survivor ???§³???????? 8:1?????????????????? 90 %???????¦Ë????§Ø??? 10% ????????????? Survivor ?????????????????????????????§Ù???????????????????????? ### 2.3 ??? - ?????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/902b83ab-8054-4bd2-898f-9a4a0fe52830.jpg) ?????§Õ??????????????????????????????????????µµ ### 2.4 ???????? ????????????????¡Â?????????????????????????????????????????????????œý??????ï…???????????????????? ??? Java ??????????????????? 1. ???????????????? 2. ???????????? - ???? ???? ??? - ???? ???? ## 3. ????????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c625baa0-dde6-449e-93df-c3a67f2f430f.jpg) ?????? HotSpot ??????§Ö? 7 ?????????????????????????????????????¨¢? ### 3.1 Serial ????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/22fda4ae-4dd5-489d-ab10-9ebfdad22ae0.jpg) ??????????????????????¦Æ???????????????????????????????????????????????????????????????????????????????????????????????? ???????????§¹????????? CPU ??????????????????????????????????????????????§¹??? ?? Client ??¨®????§µ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ### 3.2 ParNew ????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/81538cd5-1bcf-4e31-86e5-e198df1e013b.jpg) ???? Serial ???????????·Ú?? ?? Server ??????????????????????????????????????????????????? Serial ???????????????? CMS ????????????? ???????????????? CPU ???????????????? -XX:ParallelGCThreads ????????????????? ### 3.3 Parallel Scavenge ????? ????§Ö???????????? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? CPU ?????????????????????????????? ??????????????????????????????????????????????????????î•????????????????§¹??????? CPU ????????????????????????????????????????????????????? ?????????????????????????????????????????????????????? -XX:MaxGCPauseMillis ??????????????????????§³?? -XX:GCTimeRatio ???????????? 0 ??§³?? 100 ???????????????????????????????????????????????????????????????§³???????????????????????????????? ????????????? -XX:+UseAdaptiveSizePolicy?????????????????????????????????????????????§³??-Xmn????Eden ?? Survivor ?????????-XX:SurvivorRatio?????????????????????-XX:PretenureSizeThreshold???????????????????????????????????????????????????????????§»???????????????????????????????????????????? GC ??????????????GC Ergonomics??????????????????????? ParNew ????????????????? ### 3.4 Serial Old ????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/08f32fd3-f736-4a67-81ca-295b2a7972f2.jpg) Serial Old ?? Serial ?????????????·Ú?????? Client ????????????¨¢???????? Server ?????????????????? 1. ?? JDK 1.5 ??????·Ú??Parallel Old ????????????? Parallel Scavenge ???????????¨¢? 2. ??? CMS ????????????????????????? Concurrent Mode Failure ???¨¢? ### 3.5 Parallel Old ????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/278fe431-af88-4a95-a895-9c3b80117de3.jpg) ?? Parallel Scavenge ?????????????·Ú?? ?????????????? CPU ??????§Ö?????????????????? Parallel Scavenge ?? Parallel Old ??????? ### 3.6 CMS ????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/62e77997-6957-4b68-8d12-bfd609bb2c68.jpg) CMS??Concurrent Mark Sweep?????? Mark Sweep ?????????????? ??? - ??? ??????? ?????????????????? ??????????????? 1. ??????????????????? GC Roots ??????????????????????????? 2. ???????????? GC Roots Tracing ??????????????????????§Ü??????????????? 3. ???¡À?????????????????????????????????????????¡À????????????????????????????????? 4. ?????????????????? ???????????§Ü????????????????????????§µ?????????????????????????????????????????? ??????????? 1. ?? CPU ??????§³?CMS ??????????????????? (CPU ???? + 3) / 4???? CPU ???? 4 ?????CMS ??????????????????¨²????????? CPU ???????????????????????????????????????????????????????????????????? 50%?????????????????????????????????????????????????????? CPU ????????? 2. ??????????????????????????????????????????????????????????????????????????????????????????????????????????CMS ????????????§Õ????????????????????? GC ?????????????????????????????????????????????????????????????????????????§µ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¨¢???????? -XX:CMSInitiatingOccupancyFraction ???????????????????????????????JDK 1.5 ???????????? 68?????????????????? 68% ?????????????????????????????????????????????????????—¨????????? Concurrent Mode Failure?????????????????????????????? Serial Old ?????????????????????????????? 3. ??? - ??????????????????????????????????ú‘?????????????????????????????????????????????????????¨°??????????? Full GC?? ### 3.7 G1 ????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f99ee771-c56f-47fb-9148-c0036695b5fe.jpg) G1??Garbage-First??????????????????????????????????????????????????????????????????HotSpot ?????????????????????????????¦Ä???????�I?? JDK 1.5 ?§Ù????? CMS ??????? ?????????? - ??????????????????? CPU ???????????????????? CPU ???????????? - ??????????????????????????????????????????????????????????????? GC ?????????????¨°?????????????????????????????????????? GC ???????????????????§¹???? - ????????????????????????? - ??????????????????????????? Region ???????????????????????????????¦Æ???????????????????????? - ??????????????????? CMS ?????????????????????? G1 ?? CMS ??????????? G1 ???????????????????????????????????????????????????????????? M ???????????????????? GC ???????¨®??? N ??????????????? Java??RTSJ?????????????????????? ?? G1 ???????????????????????¦¶???????????????????????????? G1 ????????????Java ?????ÕÓ??????????????§Ü??????????? Java ???????????§³???????????Region?????????????????????????????????????????????????????????????????????????? Region??????????????????? ??????????????????????????????????????§Þ????????????? Java ???§ß??????????????????????????? Region ??????????????????§³???????????????§³??????????????????????????????????????§Ò???¦È??????????????????????????? Region????????? Garbage-First ??????????????????? Region ???????????????????????????????????????????????????????????????????§¹??? Region ????????????????????????????? Region ?§µ??????????? Java ???????????????¨´?????????????????????????????????????????? Java ???????????????????? GC §¹???????????????????????????????? Region ?????????????????? Remembered Set????????????????? Reference ????????????§Õ??????????????? Write Barrier ????§Ø?§Õ????????? Reference ????????????????? Region ??§µ???????????? CardTable ???????????????????????????????? Region ?? Remembered Set ??§³?????????????????? GC ??????????¦¶?§Þ??? Remembered Set ???????????????????????????? ???????????? Remembered Set ???????G1 ??????????????????????????????Ñs 1. ?????? 2. ??????? 3. ??????????????????????????????????????????????¡À??????????????????????????????????????�£????????? Remembered Set Logs ???—¨????????????? Remembered Set Logs ?????????? Remembered Set ?§³?????????????????????????§³? 4. ??????????????? Region ?§Ö???????????????????????????????? GC ????????????????????????????????????????????????????§µ?????????????????? Region??????????????????????????????????????????§¹??? ### 3.8 ????????????????? | ????? | ???§³????? or ???? | ?????? / ????? | ?? | ??? | ???¨®??? | | --- | --- | --- | --- | --- | --- | | **Serial** | ???? | ?????? | ?????? | ?????????? | ?? CPU ??????? Client ?? | | **Serial Old** | ???? | ????? | ??? - ???? | ?????????? | ?? CPU ??????? Client ????CMS ?????? | | **ParNew** | ???? | ?????? | ?????? | ?????????? | ?? CPU ??????? Server ?????? CMS ??? | | **Parallel Scavenge** | ???? | ?????? | ?????? | ?????????? | ????????????????????????? | | **Parallel Old** | ???? | ????? | ??? - ???? | ?????????? | ????????????????????????? | | **CMS** | ???? | ????? | ??? - ??? | ?????????? | ?????????????? B/S ?????????? Java ??? | | **G1** | ???? | both | ??? - ???? + ?????? | ?????????? | ?????????????????�I CMS | ## 4. ?????????????? ### 4.1 ?????? Eden ???? ??????????????????????? Eden ???????? Eden ?????????????? Minor GC?? ### 4.2 ???????????????? ?? -XX:PretenureSizeThreshold ????????????????????????????????????? Eden ???? Survivor ???????????¿Ê??? ### 4.3 ?????????????????? JVM ?????????????????????? Minor GC ????????? Survivor ????????????? Survivor ????????? 1?????????? Minor GC ??????????????? 1???????????????????????????????? 15 ????? -XX:MaxTenuringThreshold ??????? ### 4.4 ????????????§Ø? ?? Survivor ????????????§Ø????§³?????? Survivor ??????????????????????????????????????????? ### 4.5 ???????? ????? Minor GC ????JVM ?????????????????????????????????????§Ø?????????????? Minor GC ???????????????????????????????????????????????¦Í????????????????????§³???????????? Minor GC??§³???????? Full GC?? ## 4.6 Full GC ????????? ???? Minor GC?????????????????? Eden ???????????????????? Minor GC???? Full GC ????????????????????? ### 4.6.1 ???? System.gc() ??????????????? JVM ???? Full GC??????????????????????????????????? Full GC????????? Full GC ????????????????§¼???????????????????????????????????????????????????????????—¨????? -XX:+ DisableExplicitGC ????? RMI ???? System.gc()?? ### 4.6.2 ?????????? ??????????????????????????????????????????????????????????????????????? Full GC ??????????????????????? Java.lang.OutOfMemoryError: Java heap space ????????????????????? Full GC??????????????????????? Minor GC ??¦Á????????????????????????????¹À??????????????????î• ### 4.6.3 ??????????? ?????????? Minor GC ???????????????????????????????? HandlePromotionFailure ????????????? Full GC?? ### 4.6.4 JDK 1.7 ????????????????? ?? JDK 1.7 ???????HotSpot ??????§Ö??????????????????????????§Õ?????§» class ??????????????????????????????????????????????????????????????Permanet Generation ????????????¦Ä????????? CMS GC ????????????? Full GC????????? Full GC ?????????????? JVM ?????????????????java.lang.OutOfMemoryError: PermGen space ????? PermGen ?????? Full GC ????????????????? PermGen ????????? CMS GC?? ?? JDK 1.8 ?????????�I?????????????????????????????????—¨??????????? Full GC ???????????? ### 4.6.5 Concurrent Mode Failure ??? CMS GC ??????????§Ø????????????????????????????????????????? CMS GC ??????????????????????????????? Full GC??????? Concurrent Mode Failure ????????? Full GC?? # ???????? ???????????????????? ## 1 ??????????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/32b8374a-e822-4720-af0b-c0f485095ea2.jpg) ???????? 7 ????¦²? - **?????Loading??** - **?????Verification??** - **?????Preparation??** - **??????Resolution??** - **???????Initialization??** - ????Using?? - §Ø???Unloading?? ???§ß??????????§»???????????????????????????????????? Java ??????? ## 2. ????????? ??????œZ?§Ó????????????????§Þ????????œZ???ÕÇ?????????????????????????????§Ô??????( ???????????????????????? ) 1. ???? new??getstatic??putstatic??invokestatic ????????????????????????§ß??§Û?????????????????????????????????????? 4 ??????????????? new ????????????????????????????????????¦²??? final ???¦±???????????????????????????¦Ã???????????????????????????????? 2. ??? java.lang.reflect ?????????????§Ù?????????????????§ß??§Ô???????????????????????? 3. ????????????????????????Íè????§ß??§Û???????????????????Íè????????? 4. ?????????????????????????????§Ö????????? main() ????????????????????????????????? 5. ????? jdk1.7 ???????????????????? java.lang.invoke.MethodHandle ?????????????? REF_getStatic, REF_putStatic, REF_invokeStatic ???????????????????????????????????§ß??§Û?????????????????????????? ???? 5 ??????§Ö????????????????????????¨¢??????????????????????????????????????????????¨¢?????????????????????? 1\. ???????????????????¦²????????????????? ```java System.out.println(SubClass.value); // value ????? SuperClass ?§Ø??? ``` 2\. ??????úE????????????????????????????¨´?????????????§Ô???????????????????????????????????????? Object ?????????§Ñ???????????????????? ```java SuperClass[] sca = new SuperClass[10]; ``` 3\. ??????????¦Ë????????????????§µ??????????????????????�i?????????????????�i????????????? ```java System.out.println(ConstClass.HELLOWORLD); ``` ## 3. ???????? ???????????????????????????????? 5 ????¦±? ### 3.1 ???? ?????????????????¦²??????????? ????????????????????? 1. ???????????????????????????????????????? 2. ????????????????????›¥????????????????????›¥???? 3. ???????????????????????? Class ?????????????????????????????????? ???§Ø??????????????????¡¤???§Ý???? - ?? ZIP ???????????????????????? JAR??EAR??WAR ?????????? - ???????§Ý?????????????????????? Applet?? - ???????????????????????????????????????????? java.lang.reflect.Proxy ?§µ????????? ProxyGenerator.generateProxyClass ???????????????????? - ??????????????????????? JSP ???????? JSP ??????????? Class ?? - ????????????????????????????????§»?§Þ???????????? SAP Netweaver????????????????????????????????????????????? ... ### 3.2 ??? ??? Class ???????????§Ñ??????????????????????????????¦²???????????????? ????????? 4 ????¦²? 1. ????????? 2. ??????????????????????????????????????? 3. ??????????????????????????????????????????????????????????????????????????§µ??????? 4. ??????????? ### 3.3 ??? ???????? static ???¦Å????????????????????????›g???¨®????????????????????µµ ????????????????¦Ç?????—¨???????????????????????????????? Java ???§³? ???????? 0 ????????????????? value ???????? 0 ?????? 123?? ```java public static int value = 123; ``` ??????????????????????????????§Ô??????????????? 0?? ```java public static final int value = 123; ``` ### 3.4 ???? ?????????????????�I????????????? ### 3.5 ????? ???????¦Ì??????????????? <clinit>() ?????????? ???????¦²?????????????????????????????????????¦²????????????????????????????????????????????????? <clinit>() ??????????????? - ???????????????????????????????????????????÷Ïstatic{} ?ï‚?§Ö???????????????????????????????????????§Ô?????????????????????????????????????????????????????????????????????????????????????????????????? ```java public class Test { static { i = 0; // ???????????????????????? System.out.print(i); // ????????????????????????¨¢? } static int i = 1; } ``` - ?????????????????????????? <init>()??????????????????????????????????????????????????? <clinit>() ????????????????? <clinit>() ?????????§ß??????????????§Ö??????? <clinit>() ??????????? java.lang.Object?? - ???????? <clinit>() ????????§µ??????¦Æ??????§Ø??????????????????????????????????????????? ```java static class Parent { public static int A = 1; static { A = 2; } } static class Sub extends Parent { public static int B = A; } public static void main(String[] args) { System.out.println(Sub.B); // ????????????§Ö???????? A??????? 2 } ``` - <clinit>() ??????????????????????????????§Ó???????????ï…???§Ø???????????????????????????????????? <clinit>() ?????? - ????§Ó?????????????ï…??????????????????????????????????????????????? <clinit>() ???????????????????????§ß??? <clinit>() ?????????????§Ú????? <clinit>() ????????§Ö???????§Ø????????????????????????????????????????????????????????§ß??? <clinit>() ?????? - ?????????????? <clinit>() ??????????????¡À????????????????????????????????????????????????????????? <clinit>() ???????????????????????????????????? <clinit>() ??????????????????? <clinit>() ???????§Ü??????????????????????????????????????§Õ????????????¦±? ## 4. ??????? ????????????????????§Ö????????????????????????????????????????? ( ??????? )???????????? Java ???????????????????¨®??????????????????????????????????????????????????????????? ### 4.1 ??????????? ???????????????????????????????????????????????????? Java ??????§Ö?¦·??????????????????????????????????????????????????????????????????????????????????????? Class ????? equals() ??????isAssignableFrom() ??????isInstance() ????????????????????? instanceof() ????????????????????§Ø?????????????????????????????????????????????????????ÈÉ??????????????????????? Class ??????????????????????????????????????????????????????????????? ### 4.2 ??????????? ?? Java ????????????????????????????????????????? ??????????????????Bootstrap ClassLoader???????????????? C++ ??????????????????????????????????????????????????§»???? Java ???????????????????????????????????? java.lang.ClassLoader?? ?? Java ??????????????????????????????????§»?? - ?????????????Bootstrap ClassLoader?? ????????????????? \lib ???§Ö??????? -Xbootclasspath ???????????¡¤???§Ö?????????????????????????????????? rt.jar???????????????????? lib ??????????????????????????????§³? ???????????????? Java ??????????????????§Õ????????????????????????????????????????????????????? null ???�r?¨À? - ????????????Extension ClassLoader?? ?????????????? ExtClassLoader??sun.misc.Launcher$ExtClassLoader????????????? /lib/ext ????? java.ext.dir ???????????¡¤???§Ö????????????????§µ???????????????????????????? - ??¨®????????????Application ClassLoader?? ?????????????? AppClassLoader??sun.misc.Launcher$AppClassLoader??????????????????????? ClassLoader ?§Ö? getSystemClassLoader() ?????????????????????????????????????????????¡¤????ClassPath??????????????????????????????????????????????¨®????????????????????????????????????????????????????????????? ### 4.3 ????????? ??¨®?????????????????????????§Þ?????????§Ò?????????????????????????????????????????????????¦É??????????????????????????Parents Delegation Model??????????????????????????????????????????????????????????????????????????????????????????????Composition??????????????????????§µ?Inheritance?????????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/2cdc3ce2-fa82-4c22-baaa-000c07d10473.jpg) **????????** ??????????????????????????????????????????????????????????????????????????????????¦Å?????????????????¦Å?ï…??????§Ö?????????????????????????????????????§µ???§Ö??????????????????????????????????????¦¶????????????????????????????????????? **???** ??????????????????????????????????? Java ??????????????????????????????????????¦É?????????? java.lang.Object????????? rt.jar ?§µ??????????????????????????????????????????????????????????????§Þ??????? Object ???????????????????????§Ø????????????????????????????????????????????§Þ???????????????§Õ??????????java.lang.Object ?????????????? ClassPath ?§µ??????§ß????????????? Object ????????????????????????????§Õ????? rt.jar ????????????????? Java ??????????????????????????????????????§³? **???** ```java protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException{ //check the class has been loaded or not Class c = findLoadedClass(name); if(c == null) { try{ if(parent != null) { c = parent.loadClass(name, false); } else{ c = findBootstrapClassOrNull(name); } } catch(ClassNotFoundException e) { //if throws the exception , the father can not complete the load } if(c == null) { c = findClass(name); } } if(resolve) { resolveClass(c); } return c; } ``` # JVM ???? ## GC ??????? | ???? | ???? | | --- | --- | | -Xms | ???????????§³ | | -Xmx | ????????? | | -Xmn | ????????§³ | | -XX:PermSize | ????????????§³ | | -XX:MaxPermSize | ???????????? | ## GC ???????? | ???? | ???? | | --- | --- | | -XX:+UseSerialGC | ?????????????? | | -XX:+UseParallelGC | ?????????????? | | -XX:+UseConcMarkSweepGC | ???????????????????? | | -XX:ParallelCMSThreads= | ???????????????????? = ???????????? | | -XX:+UseG1GC | G1 ?????????? | ```java java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC -jar java-application.jar ```