2018-02-20 10:40:05 +08:00
<!-- GFM - TOC -->
2018-02-22 14:47:22 +08:00
* [?????? ](#?????? )
* [1. ????????? ](#1-????????? )
* [2. Java ?????? ](#2-java-?????? )
* [3. ???????? ](#3-???????? )
* [4. Java ?? ](#4-java-?? )
* [5. ?????? ](#5-?????? )
* [6. ??????????? ](#6-??????????? )
* [7. ?????? ](#7-?????? )
* [??????? ](#??????? )
* [1. ?<3F> <> ??????????????? ](#1-?<3F> <> ??????????????? )
* [1.1 ???<3F> <> ??? ](#11-???<3F> <> ??? )
* [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-??????????? )
2018-02-20 10:40:05 +08:00
* [1.4 finalize() ](#14-finalize )
2018-02-22 14:47:22 +08:00
* [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 ????????????<3F> <> ? ](#44-????????????<3F> <> ? )
* [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-????????????????? )
2018-02-20 10:40:05 +08:00
* [4.6.5 Concurrent Mode Failure ](#465-concurrent-mode-failure )
2018-02-22 14:47:22 +08:00
* [???????? ](#???????? )
* [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-???????? )
2018-02-20 10:40:05 +08:00
<!-- GFM - TOC -->
2018-02-22 14:47:22 +08:00
# ??????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/dc695f48-4189-4fc7-b950-ed25f6c80f82.jpg)
2018-02-22 14:47:22 +08:00
????????????????<3F> <> ??????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 1. ?????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????<3F> <> ????????????????????????????<3F> <> ??? Native ????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 2. Java ??????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??? Java ????????<3F> <> ????????????????<3F> <> ???????????????????????????????????????????????????????????????????????????????? Java ?????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ???????????????????????????? StackOverflowError ????
2. ????<3F> <> ????????????????????<3F> <> ????? OutOfMemoryError ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 3. ????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? Java ?????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 4. Java ??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???<3F> <> ???????????????????<3F> <>
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????????????"GC ?? "???????????????????????<3F> <> ?????????Java ??????????????????????????????????????? Eden ???From Survivor ???To Survivor ???????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????<3F> <> ??????? -Xmx ?? -Xms ???????????????<3F> <> ?????????????????? OutOfMemoryError ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 5. ??????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? Java ??????????????????<3F> <> ??????????????????????????????? OutOfMemoryError ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????????????????????????????????????<3F> <> ??????????????????HotSpot ?????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 6. ???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????Class ????<3F> <> ???????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????????<3F> <> ? String ??? intern() ?????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 7. ??????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? JDK 1.4 ????????? NIO ???????????????????Channel??????????Buffer???? I/O ?????????????? Native ?????????????????<3F> <> ??????????<3F> <> ?? Java ????? DirectByteBuffer ????????????????????<3F> <> ??????????????<3F> <> ????????????????????????????? Java ??? Native ????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
# ???????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????????????????????????????????<3F> <> ????????????????????????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????????? Java ???????????<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 1. ?<3F> <> ???????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 1.1 ???<3F> <> ???
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????????<3F> <> ????????????????????????????????? 1???????<3F> <> ????????? 1??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???<3F> <> ???? 0 ????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????????????????<3F> <> ??????????? 0?????? GC ?????????????
2018-02-20 10:40:05 +08:00
```java
objA.instance = objB;
objB.instance = objA;
```
2018-02-22 14:47:22 +08:00
### 1.2 ?????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??? GC Roots ???????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
GC Roots ???????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ????????????????
2. ???????????????????????
3. ???????<3F> <> ????????????
4. ??????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 1.3 ????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????<3F> <> ??????<3F> <> ?????????????????????????????????<3F> <> ?????????????????<3F> <> ???????????????<3F> <> ??<3F> <> ??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
#### 1.3.1 ?????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
```java
Object obj = new Object();
```
2018-02-22 14:47:22 +08:00
#### 1.3.2 ??????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????????<3F> <> ????
2018-02-20 10:40:05 +08:00
```java
Object obj = new Object();
SoftReference< Object > sf = new SoftReference< Object > (obj);
obj = null;
sf.get();
```
2018-02-22 14:47:22 +08:00
sf ??? obj ??????????????? sf.get() ??????????????????????????????????????????????????? null??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????????????????????????????????????????????????????????????????????????????????????<3F> <> ???????????????????????????????????????<3F> <> ?????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
#### 1.3.3 ??????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????<3F> <> ???????????????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
```java
Object obj = new Object();
WeakReference< Object > wf = new WeakReference< Object > (obj);
obj = null;
wf.get();
wf.isEnQueued();
```
2018-02-22 14:47:22 +08:00
#### 1.3.4 ??????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????????????????????????????????????????????????<3F> q??????????????????????????????????????????????????<3F> <> ?????<3F> <> ????????????????????????????????????????
2018-02-20 10:40:05 +08:00
```java
Object obj = new Object();
PhantomReference< Object > pf = new PhantomReference< Object > (obj);
obj=null;
pf.get();
pf.isEnQueued();
```
2018-02-22 14:47:22 +08:00
### 1.3 ???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????????????????????<3F> <> ???
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????<3F> <> ???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???<3F> <> ????????????????????????????????????????????????<3F> <> ???
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ???????<3F> <> ????????????????????? Java ???<3F> <> ??????????<3F> <> ??????
2. ???????? ClassLoader ??????????
3. ???????? java.lang.Class ??????????<3F> ʦ<EFBFBD> ??????????????????<3F> ʦ<EFBFBD> ???????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????? -Xnoclassgc ???????????????????<3F> <> ???
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????<3F> <> ??????????CGLib ?? ByteCode ??????????? JSP ??? OSGo ???????????? ClassLoader ????????????????????<3F> <> ?????????????????????????
2018-02-20 10:40:05 +08:00
### 1.4 finalize()
2018-02-22 14:47:22 +08:00
???????????????????????????<3F> <> ????? finalize() ????????????<3F> <> ???????????<3F> <> ?????????????<3F> <> ????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
finalize() ???? C++ ???<3F> y??????????????????????????????? try-finally ????????????????????<3F> <> ??????<3F> <> ?????????????????????????????????????????<3F> <> ????<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 2. ?????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 2.1 ??? - ?????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a4248c4b-6c1d-4fb8-a557-86da92d3a294.jpg)
2018-02-22 14:47:22 +08:00
???????????????<3F> <> ???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ???????????<3F> <> ???????
2. ????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????????????<3F> <> ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 2.2 ??????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e6b733ad-606d-4028-b3e8-83c3a73a3797.jpg)
2018-02-22 14:47:22 +08:00
????<3F> <> ?????<3F> <> ???????<3F> <> ?????????????<3F> <> ??????????????????????????????????????<3F> <> ????????<3F> <> ??????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????????????????????????????????????<3F> <> ?????<3F> <> ???????<3F> <> ???????????? Eden ?????????<3F> <> ?? Survior ????????? Eden ??????????? Survivor???????????? Eden ?? Survivor ?<3F> <> ???????????????????????? Survivor ????????????? Eden ?? Survivor??HotSpot ??????? Eden ?? Survivor ???<3F> <> ???????? 8:1?????????????????? 90 %???????<3F> <> ????<3F> <> ??? 10% ????????????? Survivor ?????????????????????????????<3F> <> ????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 2.3 ??? - ??????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/902b83ab-8054-4bd2-898f-9a4a0fe52830.jpg)
2018-02-22 14:47:22 +08:00
?????<3F> <> ??????????????????????????????????????<3F> <>
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 2.4 ????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????????<3F> <> ?????????????????????????????????????????????????<3F> <> ??????<3F> <> ????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??? Java ???????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ????????????????
2. ???????????? - ???? ???? ??? - ???? ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 3. ?????????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c625baa0-dde6-449e-93df-c3a67f2f430f.jpg)
2018-02-22 14:47:22 +08:00
?????? HotSpot ??????<3F> <> ? 7 ?????????????????????????????????????<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.1 Serial ?????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/22fda4ae-4dd5-489d-ab10-9ebfdad22ae0.jpg)
2018-02-22 14:47:22 +08:00
??????????????????????<3F> <> ????????????????????????????????????????????????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????<3F> <> ????????? CPU ??????????????????????????????????????????????<3F> <> ???
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? Client ??<3F> <> ????<3F> <> ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.2 ParNew ?????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/81538cd5-1bcf-4e31-86e5-e198df1e013b.jpg)
2018-02-22 14:47:22 +08:00
???? Serial ???????????<3F> <> ??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? Server ??????????????????????????????????????????????????? Serial ???????????????? CMS ?????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????????? CPU ???????????????? -XX:ParallelGCThreads ?????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.3 Parallel Scavenge ?????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????<3F> <> ????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? CPU ??????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????????????????????????????????????<3F> <> ????????????????<3F> <> ??????? CPU ?????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????????????????????????????????????????? -XX:MaxGCPauseMillis ??????????????????????<3F> <> ?? -XX:GCTimeRatio ???????????? 0 ??<3F> <> ?? 100 ???????????????????????????????????????????????????????????????<3F> <> ????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????? -XX:+UseAdaptiveSizePolicy?????????????????????????????????????????????<3F> <> ??-Xmn????Eden ?? Survivor ?????????-XX:SurvivorRatio?????????????????????-XX:PretenureSizeThreshold???????????????????????????????????????????????????????????<3F> <> ???????????????????????????????????????????? GC ??????????????GC Ergonomics??????????????????????? ParNew ?????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.4 Serial Old ?????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/08f32fd3-f736-4a67-81ca-295b2a7972f2.jpg)
2018-02-22 14:47:22 +08:00
Serial Old ?? Serial ?????????????<3F> <> ?????? Client ????????????<3F> <> ???????? Server ??????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ?? JDK 1.5 ??????<3F> <> ??Parallel Old ????????????? Parallel Scavenge ???????????<3F> <> ?
2. ??? CMS ????????????????????????? Concurrent Mode Failure ???<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.5 Parallel Old ?????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/278fe431-af88-4a95-a895-9c3b80117de3.jpg)
2018-02-22 14:47:22 +08:00
?? Parallel Scavenge ?????????????<3F> <> ??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????? CPU ??????<3F> <> ?????????????????? Parallel Scavenge ?? Parallel Old ???????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.6 CMS ?????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/62e77997-6957-4b68-8d12-bfd609bb2c68.jpg)
2018-02-22 14:47:22 +08:00
CMS??Concurrent Mark Sweep?????? Mark Sweep ?????????????? ??? - ??? ???????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ??????????????????? GC Roots ???????????????????????????
2. ???????????? GC Roots Tracing ??????????????????????<3F> <> ???????????????
3. ???<3F> <> ?????????????????????????????????????????<3F> <> ?????????????????????????????????
4. ??????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????<3F> <> ????????????????????????<3F> <> ??????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ?? CPU ??????<3F> <> ?CMS ??????????????????? (CPU ???? + 3) / 4???? CPU ???? 4 ?????CMS ??????????????????<3F> <> ????????? CPU ???????????????????????????????????????????????????????????????????? 50%?????????????????????????????????????????????????????? CPU ?????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
2. ??????????????????????????????????????????????????????????????????????????????????????????????????????????CMS ????????????<3F> <> ????????????????????? GC ?????????????????????????????????????????????????????????????????????????<3F> <> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<3F> <> ???????? -XX:CMSInitiatingOccupancyFraction ???????????????????????????????JDK 1.5 ???????????? 68?????????????????? 68% ?????????????????????????????????????????????????????<3F> <> ????????? Concurrent Mode Failure?????????????????????????????? Serial Old ??????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
3. ??? - ??????????????????????????????????<3F> <> ?????????????????????????????????????????????????????<3F> <> ??????????? Full GC??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.7 G1 ?????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f99ee771-c56f-47fb-9148-c0036695b5fe.jpg)
2018-02-22 14:47:22 +08:00
G1??Garbage-First??????????????????????????????????????????????????????????????????HotSpot ?????????????????????????????<3F> <> ???????<3F> I?? JDK 1.5 ?<3F> <> ????? CMS ???????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- ??????????????????? CPU ???????????????????? CPU ????????????
- ??????????????????????????????????????????????????????????????? GC ?????????????<3F> <> ?????????????????????????????????????? GC ???????????????????<3F> <> ????
- ????????????????????????? - ??????????????????????????? Region ???????????????????????????????<3F> <> ????????????????????????
- ??????????????????? CMS ?????????????????????? G1 ?? CMS ??????????? G1 ???????????????????????????????????????????????????????????? M ???????????????????? GC ???????<3F> <> ??? N ??????????????? Java??RTSJ??????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? G1 ???????????????????????<3F> <> ???????????????????????????? G1 ????????????Java ?????<3F> <> ??????????????<3F> <> ??????????? Java ???????????<3F> <> ???????????Region?????????????????????????????????????????????????????????????????????????? Region???????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????????????????????<3F> <> ????????????? Java ???<3F> <> ??????????????????????????? Region ??????????????????<3F> <> ???????????????<3F> <> ??????????????????????????????????????<3F> <> ???<3F> <> ??????????????????????????? Region????????? Garbage-First ??????????????????? Region ???????????????????????????????????????????????????????????????????<3F> <> ???
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
Region ????????????????????????????? Region ?<3F> <> ??????????? Java ???????????????<3F> <> ?????????????????????????????????????????? Java ???????????????????? GC <20> <> ???????????????????????????????? Region ?????????????????? Remembered Set????????????????? Reference ????????????<3F> <> ??????????????? Write Barrier ????<3F> <> ?<3F> <> ????????? Reference ????????????????? Region ??<3F> <> ???????????? CardTable ???????????????????????????????? Region ?? Remembered Set ??<3F> <> ?????????????????? GC ??????????<3F> <> ?<3F> <> ??? Remembered Set ????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????? Remembered Set ???????G1 ??????????????????????????????<3F> s
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ??????
2. ???????
3. ??????????????????????????????????????????????<3F> <> ??????????????????????????????????????<3F> <> ????????? Remembered Set Logs ???<3F> <> ????????????? Remembered Set Logs ?????????? Remembered Set ?<3F> <> ?????????????????????????<3F> <> ?
4. ??????????????? Region ?<3F> <> ???????????????????????????????? GC ????????????????????????????????????????????????????<3F> <> ?????????????????? Region??????????????????????????????????????????<3F> <> ???
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.8 ?????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
| ????? | ???<3F> <> ????? or ???? | ?????? / ????? | ?? | ??? | ???<3F> <> ??? |
2018-02-20 10:40:05 +08:00
| --- | --- | --- | --- | --- | --- |
2018-02-22 14:47:22 +08:00
| **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 |
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 4. ??????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.1 ?????? Eden ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????? Eden ???????? Eden ?????????????? Minor GC??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.2 ????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? -XX:PretenureSizeThreshold ????????????????????????????????????? Eden ???? Survivor ???????????<3F> <> ???
### 4.3 ??????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
JVM ?????????????????????? Minor GC ????????? Survivor ????????????? Survivor ????????? 1?????????? Minor GC ??????????????? 1???????????????????????????????? 15 ????? -XX:MaxTenuringThreshold ???????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.4 ????????????<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? Survivor ????????????<3F> <> ????<3F> <> ?????? Survivor ???????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.5 ????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????? Minor GC ????JVM ?????????????????????????????????????<3F> <> ?????????????? Minor GC ???????????????????????????????????????????????<3F> <> ????????????????????<3F> <> ???????????? Minor GC??<3F> <> ???????? Full GC??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 4.6 Full GC ?????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???? Minor GC?????????????????? Eden ???????????????????? Minor GC???? Full GC ?????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.6.1 ???? System.gc()
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????? JVM ???? Full GC??????????????????????????????????? Full GC????????? Full GC ????????????????<3F> <> ???????????????????????????????????????????????????????????<3F> <> ????? -XX:+ DisableExplicitGC ????? RMI ???? System.gc()??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.6.2 ??????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????????????????????????????????????????????????????? Full GC ??????????????????????? Java.lang.OutOfMemoryError: Java heap space ????????????????????? Full GC??????????????????????? Minor GC ??<3F> <> ????????????????????????????<3F> <> ??????????????????<3F> <>
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.6.3 ???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????? Minor GC ???????????????????????????????? HandlePromotionFailure ????????????? Full GC??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.6.4 JDK 1.7 ?????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? JDK 1.7 ???????HotSpot ??????<3F> <> ??????????????????????????<3F> <> ?????<3F> <> class ??????????????????????????????????????????????????????????????Permanet Generation ????????????<3F> <> ????????? CMS GC ????????????? Full GC????????? Full GC ?????????????? JVM ?????????????????java.lang.OutOfMemoryError: PermGen space ????? PermGen ?????? Full GC ????????????????? PermGen ????????? CMS GC??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? JDK 1.8 ?????????<3F> I?????????????????????????????????<3F> <> ??????????? Full GC ????????????
2018-02-20 10:40:05 +08:00
### 4.6.5 Concurrent Mode Failure
2018-02-22 14:47:22 +08:00
??? CMS GC ??????????<3F> <> ????????????????????????????????????????? CMS GC ??????????????????????????????? Full GC??????? Concurrent Mode Failure ????????? Full GC??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
# ????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 1 ???????????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/32b8374a-e822-4720-af0b-c0f485095ea2.jpg)
2018-02-22 14:47:22 +08:00
???????? 7 ????<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- **?????Loading??**
- **?????Verification??**
- **?????Preparation??**
- **??????Resolution??**
- **???????Initialization??**
- ????Using??
- <20> <> ???Unloading??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???<3F> <> ??????????<3F> <> ???????????????????????????????????? Java ???????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 2. ?????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????<3F> Z?<3F> <> ????????????????<3F> <> ????????<3F> Z???<3F> <> ?????????????????????????????<3F> <> ??????( ???????????????????????? )
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ???? new??getstatic??putstatic??invokestatic ????????????????????????<3F> <> ??<3F> <> ?????????????????????????????????????? 4 ??????????????? new ????????????????????????????????????<3F> <> ??? final ???<3F> <> ???????????????????????????<3F> <> ????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
2. ??? java.lang.reflect ?????????????<3F> <> ?????????????????<3F> <> ??<3F> <> ????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
3. ????????????????????????<3F> <> ????<3F> <> ??<3F> <> ???????????????????<3F> <> ?????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
4. ?????????????????????????????<3F> <> ????????? main() ?????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
5. ????? jdk1.7 ???????????????????? java.lang.invoke.MethodHandle ?????????????? REF_getStatic, REF_putStatic, REF_invokeStatic ???????????????????????????????????<3F> <> ??<3F> <> ??????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???? 5 ??????<3F> <> ????????????????????????<3F> <> ??????????????????????????????????????????????<3F> <> ??????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1\. ???????????????????<3F> <> ?????????????????
2018-02-20 10:40:05 +08:00
```java
2018-02-22 14:47:22 +08:00
System.out.println(SubClass.value); // value ????? SuperClass ?<3F> <> ???
2018-02-20 10:40:05 +08:00
```
2018-02-22 14:47:22 +08:00
2\. ??????<3F> E????????????????????????????<3F> <> ?????????????<3F> <> ???????????????????????????????????????? Object ?????????<3F> <> ????????????????????
2018-02-20 10:40:05 +08:00
```java
SuperClass[] sca = new SuperClass[10];
```
2018-02-22 14:47:22 +08:00
3\. ??????????<3F> <> ????????????????<3F> <> ??????????????????????<3F> i?????????????????<3F> i?????????????
2018-02-20 10:40:05 +08:00
```java
System.out.println(ConstClass.HELLOWORLD);
```
2018-02-22 14:47:22 +08:00
## 3. ????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????????????????????????? 5 ????<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.1 ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????<3F> <> ???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ????????????????????????????????????????
2. ????????????????????<3F> <> ????????????????????<3F> <> ????
3. ???????????????????????? Class ??????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???<3F> <> ??????????????????<3F> <> ???<3F> <> ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- ?? ZIP ???????????????????????? JAR??EAR??WAR ??????????
- ???????<3F> <> ?????????????????????? Applet??
- ???????????????????????????????????????????? java.lang.reflect.Proxy ?<3F> <> ????????? ProxyGenerator.generateProxyClass ????????????????????
- ??????????????????????? JSP ???????? JSP ??????????? Class ??
- ????????????????????????????????<3F> <> ?<3F> <> ???????????? SAP Netweaver?????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
...
2018-02-22 14:47:22 +08:00
### 3.2 ???
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??? Class ???????????<3F> <> ??????????????????????????????<3F> <> ????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????? 4 ????<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
1. ?????????
2. ???????????????????????????????????????
3. ??????????????????????????????????????????????????????????????????????????<3F> <> ???????
4. ???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.3 ???
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????? static ???<3F> <> ????????????????????????<3F> g???<3F> <> ????????????????????<3F> <>
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????????<3F> <> ?????<3F> <> ???????????????????????????????? Java ???<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????? 0 ????????????????? value ???????? 0 ?????? 123??
2018-02-20 10:40:05 +08:00
```java
public static int value = 123;
```
2018-02-22 14:47:22 +08:00
??????????????????????????????<3F> <> ??????????????? 0??
2018-02-20 10:40:05 +08:00
```java
public static final int value = 123;
```
2018-02-22 14:47:22 +08:00
### 3.4 ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?????????????????<3F> I?????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 3.5 ?????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????<3F> <> ??????????????? < clinit>() ??????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????<3F> <> ?????????????????????????????????????<3F> <> ?????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
< clinit>() ???????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- ???????????????????????????????????????????<3F> <> static{} ?<3F> <> ?<3F> <> ???????????????????????????????????????<3F> <> ??????????????????????????????????????????????????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
```java
public class Test {
static {
2018-02-22 14:47:22 +08:00
i = 0; // ????????????????????????
System.out.print(i); // ????????????????????????<3F> <> ?
2018-02-20 10:40:05 +08:00
}
static int i = 1;
}
```
2018-02-22 14:47:22 +08:00
- ?????????????????????????? < init>()??????????????????????????????????????????????????? < clinit>() ????????????????? < clinit>() ?????????<3F> <> ??????????????<3F> <> ??????? < clinit>() ??????????? java.lang.Object??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- ???????? < clinit>() ????????<3F> <> ??????<3F> <> ??????<3F> <> ???????????????????????????????????????????
2018-02-20 10:40:05 +08:00
```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) {
2018-02-22 14:47:22 +08:00
System.out.println(Sub.B); // ????????????<3F> <> ???????? A??????? 2
2018-02-20 10:40:05 +08:00
}
```
2018-02-22 14:47:22 +08:00
- < clinit>() ??????????????????????????????<3F> <> ???????????<3F> <> ???<3F> <> ???????????????????????????????????? < clinit>() ??????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- ????<3F> <> ?????????????<3F> <> ??????????????????????????????????????????????? < clinit>() ???????????????????????<3F> <> ??? < clinit>() ?????????????<3F> <> ????? < clinit>() ????????<3F> <> ???????<3F> <> ????????????????????????????????????????????????????????<3F> <> ??? < clinit>() ??????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- ?????????????? < clinit>() ??????????????<3F> <> ????????????????????????????????????????????????????????? < clinit>() ???????????????????????????????????? < clinit>() ??????????????????? < clinit>() ???????<3F> <> ??????????????????????????????????????<3F> <> ????????????<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## 4. ???????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
????????????????????<3F> <> ????????????????????????????????????????? ( ??????? )???????????? Java ???????????????????<3F> <> ???????????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.1 ???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
???????????????????????????????????????????????????? Java ??????<3F> <> ?<3F> <> ??????????????????????????????????????????????????????????????????????????????????????? Class ????? equals() ??????isAssignableFrom() ??????isInstance() ????????????????????? instanceof() ????????????????????<3F> <> ?????????????????????????????????????????????????????<3F> <> ??????????????????????? Class ???????????????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.2 ???????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? Java ?????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????Bootstrap ClassLoader???????????????? C++ ??????????????????????????????????????????????????<3F> <> ???? Java ???????????????????????????????????? java.lang.ClassLoader??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
?? Java ??????????????????????????????????<3F> <> ??
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- ?????????????Bootstrap ClassLoader?? ????????????????? < JAVA_HOME > \lib ???<3F> <> ??????? -Xbootclasspath ???????????<3F> <> ???<3F> <> ?????????????????????????????????? rt.jar???????????????????? lib ??????????????????????????????<3F> <> ? ???????????????? Java ??????????????????<3F> <> ????????????????????????????????????????????????????? null ???<3F> r?<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- ????????????Extension ClassLoader?? ?????????????? ExtClassLoader??sun.misc.Launcher$ExtClassLoader????????????? < Java_Home > /lib/ext ????? java.ext.dir ???????????<3F> <> ???<3F> <> ????????????????<3F> <> ????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
- ??<3F> <> ????????????Application ClassLoader?? ?????????????? AppClassLoader??sun.misc.Launcher$AppClassLoader??????????????????????? ClassLoader ?<3F> <> ? getSystemClassLoader() ?????????????????????????????????????????????<3F> <> ????ClassPath??????????????????????????????????????????????<3F> <> ?????????????????????????????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
### 4.3 ?????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??<3F> <> ?????????????????????????<3F> <> ?????????<3F> <> ?????????????????????????????????????????????????<3F> <> ??????????????????????????Parents Delegation Model??????????????????????????????????????????????????????????????????????????????????????????????Composition??????????????????????<3F> <> ?Inheritance??????????
2018-02-20 10:40:05 +08:00
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/2cdc3ce2-fa82-4c22-baaa-000c07d10473.jpg)
2018-02-22 14:47:22 +08:00
**????????**
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????????????????????????????????????????????????????????????????<3F> <> ?????????????????<3F> <> ?<3F> <> ??????<3F> <> ?????????????????????????????????????<3F> <> ???<3F> <> ??????????????????????????????????????<3F> <> ?????????????????????????????????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
**???**
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
??????????????????????????????????? Java ??????????????????????????????????????<3F> <> ?????????? java.lang.Object????????? rt.jar ?<3F> <> ??????????????????????????????????????????????????????????????<3F> <> ??????? Object ???????????????????????<3F> <> ????????????????????????????????????????????<3F> <> ???????????????<3F> <> ??????????java.lang.Object ?????????????? ClassPath ?<3F> <> ??????<3F> <> ????????????? Object ????????????????????????????<3F> <> ????? rt.jar ????????????????? Java ??????????????????????????????????????<3F> <> ?
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
**???**
2018-02-20 10:40:05 +08:00
```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;
}
```
2018-02-22 14:47:22 +08:00
# JVM ????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## GC ???????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
| ???? | ???? |
2018-02-20 10:40:05 +08:00
| --- | --- |
2018-02-22 14:47:22 +08:00
| -Xms | ???????????<3F> <> |
| -Xmx | ????????? |
| -Xmn | ????????<3F> <> |
| -XX:PermSize | ????????????<3F> <> |
| -XX:MaxPermSize | ???????????? |
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
## GC ????????
2018-02-20 10:40:05 +08:00
2018-02-22 14:47:22 +08:00
| ???? | ???? |
2018-02-20 10:40:05 +08:00
| --- | --- |
2018-02-22 14:47:22 +08:00
| -XX:+UseSerialGC | ?????????????? |
| -XX:+UseParallelGC | ?????????????? |
| -XX:+UseConcMarkSweepGC | ???????????????????? |
| -XX:ParallelCMSThreads= | ???????????????????? = ???????????? |
| -XX:+UseG1GC | G1 ?????????? |
2018-02-20 10:40:05 +08:00
```java
java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC -jar java-application.jar
```