Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
CS-Notes
提交
f74691aa
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,发现更多精彩内容 >>
未验证
提交
f74691aa
编写于
8月 30, 2018
作者:
郑
郑永川
提交者:
GitHub
8月 30, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #395 from showCodes/patch-1
Update Java 虚拟机.md
上级
58f11f78
90e46ab3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
1 deletion
+25
-1
notes/Java 虚拟机.md
notes/Java 虚拟机.md
+25
-1
未找到文件。
notes/Java 虚拟机.md
浏览文件 @
f74691aa
...
@@ -7,6 +7,8 @@
...
@@ -7,6 +7,8 @@
*
[
方法区
](
#方法区
)
*
[
方法区
](
#方法区
)
*
[
运行时常量池
](
#运行时常量池
)
*
[
运行时常量池
](
#运行时常量池
)
*
[
直接内存
](
#直接内存
)
*
[
直接内存
](
#直接内存
)
*
[
类的创建过程
](
#类的创建过程
)
*
[
对象的结构
](
#对象的结构
)
*
[
二、垃圾收集
](
#二垃圾收集
)
*
[
二、垃圾收集
](
#二垃圾收集
)
*
[
判断一个对象是否可被回收
](
#判断一个对象是否可被回收
)
*
[
判断一个对象是否可被回收
](
#判断一个对象是否可被回收
)
*
[
引用类型
](
#引用类型
)
*
[
引用类型
](
#引用类型
)
...
@@ -102,6 +104,28 @@ Class 文件中的常量池(编译器生成的各种字面量和符号引用
...
@@ -102,6 +104,28 @@ Class 文件中的常量池(编译器生成的各种字面量和符号引用
这样能在一些场景中显著提高性能,因为避免了在 Java 堆和 Native 堆中来回复制数据。
这样能在一些场景中显著提高性能,因为避免了在 Java 堆和 Native 堆中来回复制数据。
## 对象的创建过程
[
图解JAVA对象的创建过程
](
https://www.cnblogs.com/chenyangyao/p/5296807.html
)
![
111
](
https://images2015.cnblogs.com/blog/592743/201603/592743-20160319235423381-1926278401.png
)
## 对象的结构
对象包含 3 个部分:
1.
Header(对象头):如下图所示;
2.
InstanceData(实例数据):将等宽的类型放在一起;
3.
Padding(对齐填充):Hotspot 虚拟机的内存管理系统要求对象的起始地址要是 8 个字节的整数倍,而对象头就是 8 个字节的整数倍。padding 是用来填充实例数据不足 8 个字节整数倍的部分,可以理解为占位符。
![
112
](
https://images2015.cnblogs.com/blog/592743/201603/592743-20160319235633553-1910724119.png
)
## 对象的地址访问
1.
直接指针:对象的引用直接指向堆中的内存地址 (Hotspot 采用的方式);
2.
使用句柄:Java 堆中划分出一块内存作为句柄池,对象的引用指向句柄池。
![
113
](
https://images2015.cnblogs.com/blog/592743/201603/592743-20160319235555303-769658219.jpg
)
# 二、垃圾收集
# 二、垃圾收集
垃圾收集主要是针对堆和方法区进行。
垃圾收集主要是针对堆和方法区进行。
...
@@ -138,7 +162,7 @@ public class ReferenceCountingGC {
...
@@ -138,7 +162,7 @@ public class ReferenceCountingGC {
Java 虚拟机使用该算法来判断对象是否可被回收,在 Java 中 GC Roots 一般包含以下内容:
Java 虚拟机使用该算法来判断对象是否可被回收,在 Java 中 GC Roots 一般包含以下内容:
-
虚拟机栈中引用的对象
-
虚拟机栈
(局部变量表)
中引用的对象
-
本地方法栈中引用的对象
-
本地方法栈中引用的对象
-
方法区中类静态属性引用的对象
-
方法区中类静态属性引用的对象
-
方法区中的常量引用的对象
-
方法区中的常量引用的对象
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录