Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
CS-Notes
提交
18535b10
C
CS-Notes
项目概览
wushizhenking
/
CS-Notes
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CS-Notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
18535b10
编写于
3月 22, 2018
作者:
C
CyC2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto commit
上级
723acddd
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
10 addition
and
10 deletion
+10
-10
notes/JVM.md
notes/JVM.md
+8
-8
notes/数据库系统原理.md
notes/数据库系统原理.md
+2
-2
未找到文件。
notes/JVM.md
浏览文件 @
18535b10
...
...
@@ -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. 分代收集
现在的商业虚拟机采用分代收集算法,它根据对象存活周期将内存划分为几块,不同块采用适当的收集算法。
...
...
notes/数据库系统原理.md
浏览文件 @
18535b10
...
...
@@ -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
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录