File tree Expand file tree Collapse file tree 8 files changed +18
-24
lines changed Expand file tree Collapse file tree 8 files changed +18
-24
lines changed Original file line number Diff line number Diff line change 1
1
# 类加载子系统
2
2
3
- ![ JVM底层体系] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master//images/JVM%E5%BA%95%E5%B1%82%E4%BD%93%E7%B3%BB .jpg )
3
+ ![ JVM底层体系] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051414804 .jpg )
4
4
5
5
> 代码编译的结果从本地机器指令码转化为字节码,是存储格式发展的一小步,但却是编程语言发展的一大步
6
6
>
11
11
12
12
## 图示
13
13
14
- ![ 类加载子系统] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210617110918905 .png )
14
+ ![ 类加载子系统] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051415584 .png )
15
15
16
16
## 作用
17
17
23
23
24
24
## 类加载器扮演的角色
25
25
26
- ![ image-20210617111632499] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210617111632499 .png )
26
+ ![ image-20210617111632499] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051414783 .png )
27
27
28
28
- Car.class存放于本地硬盘中,在运行的时候,JVM将Car.class文件加载到JVM中,被称为DNA元数据模板
29
29
Original file line number Diff line number Diff line change 1
1
# 类加载的过程
2
2
3
- ![ image-20210730191532573] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master//images/image-20210730191532573 .png )
3
+ ![ image-20210730191532573] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051415812 .png )
4
4
5
5
类加载的过程主要分为三个阶段 加载,链接,初始化。 而链接阶段又可以细分为验证,准备,解析三个子阶段。
6
6
38
38
39
39
## 链接过程
40
40
41
- ![ 加载示例] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210617145249791 .png )
41
+ ![ 加载示例] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051415807 .png )
42
42
43
43
1 . ### 验证(Verify)
44
44
174
174
175
175
执行结果如下: 当一条线程死循环在CInit处,别的线程也会阻塞。
176
176
177
- ![ image-20210730195642762] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master//images/image-20210730195642762 .png )
177
+ ![ image-20210730195642762] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051415564 .png )
Original file line number Diff line number Diff line change 4
4
5
5
无论类加载器的类型如何划分,在程序中我们最常见的类加载器始终只有三个,如下所示:
6
6
7
- ![ image-20210730200638388] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master//images/image-20210730200638388 .png )
7
+ ![ image-20210730200638388] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051415727 .png )
8
8
9
9
- ### 启动类加载器
10
10
Original file line number Diff line number Diff line change 15
15
16
16
## ClassLoader继承关系
17
17
18
- ![ image-20210617214555582] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210617214555582 .png )
18
+ ![ image-20210617214555582] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051415566 .png )
19
19
20
20
## 获取ClassLoader的途径
21
21
22
- ![ image-20210617214611472] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210617214611472 .png )
22
+ ![ image-20210617214611472] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051415647 .png )
Original file line number Diff line number Diff line change 12
12
13
13
## 工作原理
14
14
15
- ![ image-20210617212921462] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210617212921462 .png )
15
+ ![ image-20210617212921462] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051416768 .png )
16
16
17
17
1 . ##### 如果一个类加载器收到了类加载的请求,它并不会自己加载,而是先把请求委托给父类的加载器执行
18
18
Original file line number Diff line number Diff line change 1
1
# 运行时数据区内部结构
2
2
3
- ![ ] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master//images/JVM%E5%BA%95%E5%B1%82%E4%BD%93%E7%B3%BB .jpg )
3
+ ![ ] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051416645 .jpg )
4
4
5
5
## 一、内存
6
6
7
7
内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。** 不同的jvm对于内存的划分方式和管理机制存在着部分差异** (对于Hotspot主要指方法区)
8
8
9
9
## 二、运行时数据区在JVM中的位置
10
10
11
- ![ 运行时数据区在JVM中的位置] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/%E7%AC%AC03%E7%AB%A0_%E5%BC%95%E5%85%A5%E8%BF%90%E8%A1%8C%E6%97%B6%E6%95%B0%E6%8D%AE%E5%8C%BA .jpg )
11
+ ![ 运行时数据区在JVM中的位置] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051416985 .jpg )
12
12
13
13
## 三、运行时数据区体内部结构
14
14
15
- ![ ] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210618145119065 .png )
15
+ ![ ] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051416887 .png )
16
16
> 一个进程对应一个jvm实例,一个运行时数据区,又包含多个线程,这些线程共享了方法区和堆,每个线程包含了程序计数器、本地方法栈和虚拟机栈。
17
17
18
18
##### 注: 方法区对应JDK8之后的元数据区
@@ -24,7 +24,7 @@ java虚拟机定了了若干种程序运行期间会使用到的运行时数据
24
24
- 其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁,红色区域部分
25
25
- 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。灰色区域部分
26
26
27
- ![ image-20210618141258229] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210618141258229 .png )
27
+ ![ image-20210618141258229] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051416160 .png )
28
28
29
29
每一个JVM实例都对应一个RunTime实例,即运行时环境。相当于上图中的框内部分。
30
30
Original file line number Diff line number Diff line change 1
1
2
2
> 开源项目推荐: [ Java成长之路] ( http://www.github.com/shaoxiongdu/java-notes ) Java技术栈的全套知识点总结
3
3
4
-
5
- <center >
6
- <img src =" https://gitee.com/ShaoxiongDu/imageBed/raw/master/info.jpg " style =" width :500px " >
7
- </center >
8
- <br >
4
+ ![ image-20220805101528860] ( https://images-1301128659.cos.ap-beijing.myqcloud.com/MacBookPro202208051015888.png )
9
5
10
6
<div align =" center " >
11
7
<h2><a href="https://www.jvmstudy.top" target="_blank">在线站点(阅读体验更好)</a></h2>
19
15
<img src="https://img.shields.io/badge/LICENSE-MIT-orange"/>
20
16
<img src="https://visitor-badge.glitch.me/badge?page_id=shaoxiongdu.JVMStudy">
21
17
</div >
22
-
23
18
[ ![ Stargazers over time] ( https://starchart.cc/shaoxiongdu/JVMStudy.svg )] ( https://github.com/shaoxiongdu/JVMStudy )
24
19
25
20
## 一、思维导图
26
21
27
- ![ JVMStudy] ( https://images-1301128659.cos.ap-beijing.myqcloud.com/JVMStudy .png )
22
+ ![ JVMStudy] ( https://images-1301128659.cos.ap-beijing.myqcloud.com/MacBookPro202208051014144 .png )
28
23
29
24
## 二、清单
30
25
104
99
105
100
### 我们的目标是:【分享好玩的项目,挖掘开源的价值】。
106
101
107
- > ![ Github推荐] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210820144130666 .png )
102
+ > ![ Github推荐] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051014715 .png )
108
103
109
104
## 五、反馈及改进
110
105
136
131
> 4 . 感谢GitHub提供代码仓库平台
137
132
> 5 . 感谢在线站点生成器 [ docsify] ( https://docsify.js.org/ ) 提供的在线站点生成功能
138
133
139
-
Original file line number Diff line number Diff line change 4
4
5
5
### 我们的目标是:【分享好玩的项目,挖掘开源的价值】。
6
6
7
- > ![ Github推荐] ( https://gitee. com/ShaoxiongDu/imageBed/raw/master/image-20210820144130666 .png )
7
+ > ![ Github推荐] ( https://images-1301128659.cos.ap-beijing.myqcloud. com/MacBookPro202208051016894 .png )
8
8
You can’t perform that action at this time.
0 commit comments