auto commit
This commit is contained in:
parent
723acdddfb
commit
18535b102e
16
notes/JVM.md
16
notes/JVM.md
|
@ -15,10 +15,10 @@
|
|||
* [4. 方法区的回收](#4-方法区的回收)
|
||||
* [5. finalize()](#5-finalize)
|
||||
* [垃圾收集算法](#垃圾收集算法)
|
||||
* [1. 标记-清除算法](#1-标记-清除算法)
|
||||
* [2. 复制算法](#2-复制算法)
|
||||
* [3. 标记-整理算法](#3-标记-整理算法)
|
||||
* [4. 分代收集算法](#4-分代收集算法)
|
||||
* [1. 标记-清除](#1-标记-清除)
|
||||
* [2. 复制](#2-复制)
|
||||
* [3. 标记-整理](#3-标记-整理)
|
||||
* [4. 分代收集](#4-分代收集)
|
||||
* [垃圾收集器](#垃圾收集器)
|
||||
* [1. Serial 收集器](#1-serial-收集器)
|
||||
* [2. ParNew 收集器](#2-parnew-收集器)
|
||||
|
@ -234,7 +234,7 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
|
|||
|
||||
## 垃圾收集算法
|
||||
|
||||
### 1. 标记-清除算法
|
||||
### 1. 标记-清除
|
||||
|
||||
<div align="center"> <img src="../pics//a4248c4b-6c1d-4fb8-a557-86da92d3a294.jpg"/> </div><br>
|
||||
|
||||
|
@ -247,7 +247,7 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
|
|||
|
||||
之后的算法都是基于该算法进行改进。
|
||||
|
||||
### 2. 复制算法
|
||||
### 2. 复制
|
||||
|
||||
<div align="center"> <img src="../pics//e6b733ad-606d-4028-b3e8-83c3a73a3797.jpg"/> </div><br>
|
||||
|
||||
|
@ -257,13 +257,13 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
|
|||
|
||||
现在的商业虚拟机都采用这种收集算法来回收新生代,但是并不是将内存划分为大小相等的两块,而是分为一块较大的 Eden 空间和两块较小的 Survior 空间,每次使用 Eden 空间和其中一块 Survivor。在回收时,将 Eden 和 Survivor 中还存活着的对象一次性复制到另一块 Survivor 空间上,最后清理 Eden 和 使用过的那一块 Survivor。HotSpot 虚拟机的 Eden 和 Survivor 的大小比例默认为 8:1,保证了内存的利用率达到 90 %。如果每次回收有多于 10% 的对象存活,那么一块 Survivor 空间就不够用了,此时需要依赖于老年代进行分配担保,也就是借用老年代的空间。
|
||||
|
||||
### 3. 标记-整理算法
|
||||
### 3. 标记-整理
|
||||
|
||||
<div align="center"> <img src="../pics//902b83ab-8054-4bd2-898f-9a4a0fe52830.jpg"/> </div><br>
|
||||
|
||||
让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。
|
||||
|
||||
### 4. 分代收集算法
|
||||
### 4. 分代收集
|
||||
|
||||
现在的商业虚拟机采用分代收集算法,它根据对象存活周期将内存划分为几块,不同块采用适当的收集算法。
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。
|
|||
|
||||
### 2. 意向锁
|
||||
|
||||
意向锁(Intention Locks)可以支持多粒度封锁,它在原来的 X/S 锁之上引入了 IX/IS,用来表示一个事务想要在某个数据对象上加 X 锁或 S 锁。
|
||||
意向锁(Intention Locks)可以支持多粒度封锁。它本身是一个表锁,通过在原来的 X/S 锁之上引入了 IX/IS,用来表示一个事务想要在某个数据行上加 X 锁或 S 锁。
|
||||
|
||||
有以下两个规定:
|
||||
|
||||
|
@ -307,7 +307,7 @@ InnoDB 的 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回
|
|||
|
||||
以下内容都是针对 MySQL 的 InnoDB 存储引擎来讨论的。
|
||||
|
||||
和 MVCC 一样,Next-Key Locks 也是一种实现隔离级别的一种方式。相比于 MVCC,它可以解决幻读问题。
|
||||
MVCC 不能解决幻读问题,Next-Key Locks 就是为了解决这个问题而存在的。在可重复读隔离级别下使用 Next-Key Locks,就可以防止幻读的出现。
|
||||
|
||||
## Record Locks
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user