Skip to content

Commit 6da2c6d

Browse files
committed
update docs
1 parent 11b808b commit 6da2c6d

13 files changed

+93
-45
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@
9494
9595
![img](http://dunwu.test.upcdn.net/snap/20200221180028.png)
9696

97+
- [JVM 体系结构](docs/jvm/jvm-architecture.md)
9798
- [JVM 内存区域](docs/jvm/jvm-memory.md) - 关键词:程序计数器、虚拟机栈、本地方法栈、堆、方法区、运行时常量池、直接内存、`OutOfMemoryError``StackOverflowError`
9899
- [JVM 垃圾收集](docs/jvm/jvm-gc.md) - 关键词:`GC Roots``Serial``Parallel``CMS``G1``Minor GC``Full GC`
99100
- [JVM 字节码](docs/jvm/jvm-bytecode.md) - 关键词:`bytecode``asm``javassist`

assets/JVM/Java虚拟机.xmind

-138 KB
Binary file not shown.
File renamed without changes.

docs/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu
9292
9393
![img](http://dunwu.test.upcdn.net/snap/20200221180028.png)
9494

95+
- [JVM 体系结构](jvm/jvm-architecture.md)
9596
- [JVM 内存区域](jvm/jvm-memory.md) - 关键词:程序计数器、虚拟机栈、本地方法栈、堆、方法区、运行时常量池、直接内存、`OutOfMemoryError``StackOverflowError`
9697
- [JVM 垃圾收集](jvm/jvm-gc.md) - 关键词:`GC Roots``Serial``Parallel``CMS``G1``Minor GC``Full GC`
9798
- [JVM 字节码](jvm/jvm-bytecode.md) - 关键词:`bytecode``asm``javassist`

docs/jvm/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
55
## 📖 内容
66

7+
- [JVM 体系结构](jvm-architecture.md)
78
- [JVM 内存管理](jvm-memory.md)
89
- [JVM 垃圾收集](jvm-gc.md)
910
- [JVM 字节码](jvm-bytecode.md)
@@ -15,6 +16,7 @@
1516
## 📚 资料
1617

1718
- [《深入理解 Java 虚拟机》](https://item.jd.com/11252778.html)
19+
- [从表到里学习 JVM 实现](https://www.douban.com/doulist/2545443/)
1820

1921
## 🚪 传送
2022

docs/jvm/jvm-action.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
> **📦 本文以及示例源码已归档在 [javacore](https://github.com/dunwu/javacore/)**
44
5+
[TOC]
6+
57
## 一、JVM 调优概述
68

79
对于 JVM 调优来说,需要先明确调优的目标。

docs/jvm/jvm-architecture.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# JVM 体系结构
22

3-
JVM 能跨平台工作,主要是由于 JVM 屏蔽了与各个计算机平台相关的软件、硬件之间的差异。
3+
> JVM 能跨平台工作,主要是由于 JVM 屏蔽了与各个计算机平台相关的软件、硬件之间的差异。
4+
5+
[TOC]
46

57
## JVM 简介
68

docs/jvm/jvm-bytecode.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Java 之所以可以“一次编译,到处运行”,一是因为 JVM 针对
44

55
**.class 文件是一组以 8 位字节为基础单位的二进制流**,各个数据项严格按照顺序紧凑地排列在 .class 文件中,中间没有添加任何分隔符。**整个 .class 文件本质上就是一张表**
66

7+
[TOC]
8+
79
## 字节码
810

911
### 什么是字节码

docs/jvm/jvm-class-loader.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
> **📦 本文以及示例源码已归档在 [javacore](https://github.com/dunwu/javacore/)**
44
5+
[TOC]
6+
57
## 一、类加载机制
68

79
> 类是在运行期间动态加载的。

docs/jvm/jvm-gc.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
55
> 程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。**垃圾回收主要是针对 Java 堆和方法区进行**
66
7+
[TOC]
8+
79
## 一、对象活着吗
810

911
### 引用计数算法
@@ -595,7 +597,7 @@ Minor GC 发生在年轻代上,因为年轻代对象存活时间很短,因
595597

596598
Full GC 发生在老年代上,老年代对象和年轻代的相反,其存活时间长,因此 Full GC 很少执行,而且执行速度会比 Minor GC 慢很多。
597599

598-
### 内存分配策略
600+
#### 内存分配策略
599601

600602
**(一)对象优先在 Eden 分配**
601603

@@ -623,7 +625,7 @@ Full GC 发生在老年代上,老年代对象和年轻代的相反,其存活
623625

624626
在发生 Minor GC 之前,虚拟机先检查老年代最大可用的连续空间是否大于年轻代所有对象总空间,如果条件成立的话,那么 Minor GC 可以确认是安全的;如果不成立的话虚拟机会查看 `HandlePromotionFailure` 设置值是否允许担保失败,如果允许那么就会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于,将尝试着进行一次 Minor GC,尽管这次 Minor GC 是有风险的;如果小于,或者 `HandlePromotionFailure` 设置不允许冒险,那这时也要改为进行一次 Full GC。
625627

626-
### Full GC 的触发条件
628+
#### Full GC 的触发条件
627629

628630
对于 Minor GC,其触发条件非常简单,当 Eden 区空间满时,就将触发一次 Minor GC。而 Full GC 则相对复杂,有以下条件:
629631

0 commit comments

Comments
 (0)