《深入理解JAVA虚拟机》第三版 第二,三章 要点总结

Posted zgqblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《深入理解JAVA虚拟机》第三版 第二,三章 要点总结相关的知识,希望对你有一定的参考价值。

本文仅作为复习清单使用

运行时数据区域

线程私有 :程序计数器,JAVA虚拟机栈,本地方法栈
线程共享 :堆,方法区,运行时常量池,直接内存

内存分配方式

指针碰撞
空闲列表

本地线程分配缓冲

堆在某种程度上,也存在线程私有的部分哦

对象的内存布局

对象头 : Mark word,类型指针
实例数据 
对齐填充 :任何对象的大小都必须是8字节的倍数

对象的访问方式

句柄访问
直接指针访问

内存区域的异常

内存泄露
内存溢出

jdk6,7中的常量池

jdk6中,常量池位于永久代(方法区)
jdk7中,常量池位于堆中
jdk8中,元空间取代了永久代

判断对象是否存活

引用计数
可达性分析

GCRoot

虚拟机栈中的对象
类静态属性
方法区常量
本地方法引用的对象
虚拟机内部引用
被同步锁持有的对象
反映JVM内部情况的JMXBean,JVMTI 中注册的回调,本地代码缓存等 (?)

引用的分类::大佬博客

强引用
软引用    
弱引用
虚引用

垃圾回收的过程

1.判断是否可达;
2.被标记,如果finalize()未被重写或者以及被执行过,直接进入第三步,否则,进入F-QUEUE,执行finalize()方法;
3.若仍然不可达,则回收

方法区的垃圾回收

条件苛刻,详见P74

分代假说

弱分代假说:决大多数对象都是朝生夕灭的
强分代假说:熬过越多次垃圾收集过程的对象就越难以消亡
夸代引用假说:跨代引用相对于同代引用仅占极少数

记忆集

在新生代上,将老年代分为若干块,记录哪些块会存在跨代引用

按分代的GC分类

一.部分收集(Partial GC)
1.新生代收集(Minor GC/Young GC)
2.老年代收集(Major GC/Old GC)
3.混合收集(Mixed GC)
二.整堆收集(Full GC) 包括方法区

垃圾清除算法

标记-清除 
标记-复制 (Eden,Survivor)
标记-整理

OOPMap

记录对象中属性哪些是引用

安全点(本人暂时无法理解)

虽然暂时知道这是个什么东西,不过他为什么存在,我暂时无法理解.

安全区域

同上

其他知识点

1.根节点枚举必须Stop The World
2.准确式内存:虚拟机可以知道内存中的某个数据是什么类型的

以上是关于《深入理解JAVA虚拟机》第三版 第二,三章 要点总结的主要内容,如果未能解决你的问题,请参考以下文章

《深入理解Java虚拟机 - Jvm高级特性与最佳实践(第三版)》阅读笔记

《深入理解Java虚拟机 - Jvm高级特性与最佳实践(第三版)》阅读笔记

深入理解Java虚拟机(第三版)-14. 线程安全与锁优化

《深入理解计算机系统(第三版)》第三章

企业级项目实战讲解!深入理解java虚拟机第三版下载

又到一年金三银四!深入理解java虚拟机第三版百度云