674 lines
27 KiB
Markdown
674 lines
27 KiB
Markdown
<!-- GFM-TOC -->
|
||
* [??????](#??????)
|
||
* [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-????????)
|
||
<!-- GFM-TOC -->
|
||
|
||
# ??????
|
||
|
||

|
||
|
||
????????????????§Ö??????????????????
|
||
|
||
## 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<Object> sf = new SoftReference<Object>(obj);
|
||
obj = null;
|
||
sf.get();
|
||
```
|
||
|
||
sf ??? obj ??????????????? sf.get() ??????????????????????????????????????????????????? null??
|
||
|
||
????????????????????????????????????????????????????????????????????????????????????????????ÖÎ???????????????????????????????????????§»?????
|
||
|
||
|
||
#### 1.3.3 ??????
|
||
|
||
??????›Ô???????????????????????????????????????????????????????????????
|
||
|
||
```java
|
||
Object obj = new Object();
|
||
WeakReference<Object> wf = new WeakReference<Object>(obj);
|
||
obj = null;
|
||
wf.get();
|
||
wf.isEnQueued();
|
||
```
|
||
|
||
#### 1.3.4 ??????
|
||
|
||
?????????????????????????????????????????????????????????????<3F>q??????????????????????????????????????????????????¨´?????¦·????????????????????????????????????????
|
||
|
||
```java
|
||
Object obj = new Object();
|
||
PhantomReference<Object> pf = new PhantomReference<Object>(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 ??? - ?????
|
||
|
||

|
||
|
||
???????????????§Ò???????????
|
||
|
||
????
|
||
|
||
1. ???????????§¹???????
|
||
2. ????????????
|
||
|
||
???????????????????§Ú????
|
||
|
||
### 2.2 ??????
|
||
|
||

|
||
|
||
????œý?????§³???????ï…?????????????ï…??????????????????????????????????????—¨????????¨´??????????????????
|
||
|
||
??????????????????????
|
||
|
||
??????????????????????????????????????????????????????œý?????§³???????ï…???????????? Eden ?????????§³?? Survior ????????? Eden ??????????? Survivor???????????? Eden ?? Survivor ?§Ý???????????????????????? Survivor ????????????? Eden ?? Survivor??HotSpot ??????? Eden ?? Survivor ???§³???????? 8:1?????????????????? 90 %???????¦Ë????§Ø??? 10% ????????????? Survivor ?????????????????????????????§Ù????????????????????????
|
||
|
||
### 2.3 ??? - ??????
|
||
|
||

|
||
|
||
?????§Õ??????????????????????????????????????µµ
|
||
|
||
### 2.4 ????????
|
||
|
||
????????????????¡Â?????????????????????????????????????????????????œý??????ï…????????????????????
|
||
|
||
??? Java ???????????????????
|
||
|
||
1. ????????????????
|
||
2. ???????????? - ???? ???? ??? - ???? ????
|
||
|
||
## 3. ?????????
|
||
|
||

|
||
|
||
?????? HotSpot ??????§Ö? 7 ?????????????????????????????????????¨¢?
|
||
|
||
### 3.1 Serial ?????
|
||
|
||

|
||
|
||
??????????????????????¦Æ????????????????????????????????????????????????????????????????????????????????????????????????
|
||
|
||
???????????§¹????????? CPU ??????????????????????????????????????????????§¹???
|
||
|
||
?? Client ??¨®????§µ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
|
||
|
||
### 3.2 ParNew ?????
|
||
|
||

|
||
|
||
???? 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 ?????
|
||
|
||

|
||
|
||
Serial Old ?? Serial ?????????????·Ú?????? Client ????????????¨¢???????? Server ??????????????????
|
||
|
||
1. ?? JDK 1.5 ??????·Ú??Parallel Old ????????????? Parallel Scavenge ???????????¨¢?
|
||
2. ??? CMS ????????????????????????? Concurrent Mode Failure ???¨¢?
|
||
|
||
### 3.5 Parallel Old ?????
|
||
|
||

|
||
|
||
?? Parallel Scavenge ?????????????·Ú??
|
||
|
||
?????????????? CPU ??????§Ö?????????????????? Parallel Scavenge ?? Parallel Old ???????
|
||
|
||
### 3.6 CMS ?????
|
||
|
||

|
||
|
||
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 ?????
|
||
|
||

|
||
|
||
G1??Garbage-First??????????????????????????????????????????????????????????????????HotSpot ?????????????????????????????¦Ä???????<3F>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. ??????????????????????????????????????????????¡À??????????????????????????????????????<3F>£????????? 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 | ??? - ???? + ?????? | ?????????? | ?????????????????<3F>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 ?????????<3F>I?????????????????????????????????—¨??????????? Full GC ????????????
|
||
|
||
### 4.6.5 Concurrent Mode Failure
|
||
|
||
??? CMS GC ??????????§Ø????????????????????????????????????????? CMS GC ??????????????????????????????? Full GC??????? Concurrent Mode Failure ????????? Full GC??
|
||
|
||
# ????????
|
||
|
||
????????????????????
|
||
|
||
## 1 ???????????
|
||
|
||

|
||
|
||
???????? 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\. ??????????¦Ë????????????????§µ??????????????????????<3F>i?????????????????<3F>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 ????
|
||
|
||
?????????????????<3F>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?? ????????????????? <JAVA_HOME>\lib ???§Ö??????? -Xbootclasspath ???????????¡¤???§Ö?????????????????????????????????? rt.jar???????????????????? lib ??????????????????????????????§³? ???????????????? Java ??????????????????§Õ????????????????????????????????????????????????????? null ???<3F>r?¨À?
|
||
|
||
- ????????????Extension ClassLoader?? ?????????????? ExtClassLoader??sun.misc.Launcher$ExtClassLoader????????????? <Java_Home>/lib/ext ????? java.ext.dir ???????????¡¤???§Ö????????????????§µ????????????????????????????
|
||
|
||
- ??¨®????????????Application ClassLoader?? ?????????????? AppClassLoader??sun.misc.Launcher$AppClassLoader??????????????????????? ClassLoader ?§Ö? getSystemClassLoader() ?????????????????????????????????????????????¡¤????ClassPath??????????????????????????????????????????????¨®?????????????????????????????????????????????????????????????
|
||
|
||
### 4.3 ?????????
|
||
|
||
??¨®?????????????????????????§Þ?????????§Ò?????????????????????????????????????????????????¦É??????????????????????????Parents Delegation Model??????????????????????????????????????????????????????????????????????????????????????????????Composition??????????????????????§µ?Inheritance??????????
|
||
|
||

|
||
|
||
**????????**
|
||
|
||
??????????????????????????????????????????????????????????????????????????????????¦Å?????????????????¦Å?ï…??????§Ö?????????????????????????????????????§µ???§Ö??????????????????????????????????????¦¶?????????????????????????????????????
|
||
|
||
**???**
|
||
|
||
??????????????????????????????????? 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
|
||
```
|