《深入理解java虚拟机》第三版第二,三章要点总结(代码片段)

zgqblogs zgqblogs     2023-04-08     647

关键词:

本文仅作为复习清单使用

运行时数据区域

线程私有 :程序计数器,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虚拟机-jvm高级特性与最佳实践(第三版)》阅读笔记

《深入理解Java虚拟机》阅读笔记本repository为《深入理解Java虚拟机-Jvm高级特性与最佳实践(第三版)》阅读笔记,因为第一章主要讲的是Java的发展历史,这里就不做笔记,直接从第2章的"Java内存区域与内... 查看详情

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

14.线程安全与锁优化1.什么是线程安全?当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替进行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可... 查看详情

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

3.1程序编码1.计算机系统使用了多种不同形式的抽象,对于机器级编程来说,两种抽象尤为重要:指令集体系结构(ISA):定义了处理器状态、指令的格式,以及每条指令对状态的影响机器级程序使用的存储器地址是虚拟地址:提... 查看详情

《深入理解java虚拟机》----------第三章垃圾收集器与内存分配策略,读后感(中)

1.垃圾收集器1.1Serial收集器 这个收集器是一个单线程的收集器,它在进行垃圾收集时,必须暂停其他所有的工作线程。 它是虚拟机运行在Client模式下的默认新生代收集器,它简单而高效。1.2ParNew收集器其实就是Serial收集... 查看详情

《深入理解计算机系统》(第三版)读书疑问

问题:第一章helloworld是怎样工作的?预处理器、编译器、汇编器、链接器是怎样把.c的源程序分别修改为.i、.s.、.o的程序的?第二章反码和补码在作用上有什么区别?第三章直到型循环和当行循环有什么异同?第四章Y86指令集... 查看详情

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

业界常用的服务注册与发现组件对比了解服务注册与发现的基本原理后,如果你要在项目中使用服务注册与发现组件,当面对众多的开源组件该如何进行技术选型?在互联网公司里,有研发实力的大公司一般会选... 查看详情

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

《深入理解计算机系统》第三章程序的机器级表示学习读书笔记一、这章主要任务:?二、程序编码?计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节。对于机器级编程来说,其中两种抽象尤为重... 查看详情

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

一、信息存储1.机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器,每个字节都有一个唯一的数字来标识,称为地址,所有可能地址的集合称为虚拟地址空间。2.每台计算机都有一个字长,指明指针数据的标称大... 查看详情

深入理解java虚拟机读书笔记三

深入理解Java虚拟机第三章内存管理读书笔记垃圾回收需要解决的三个问题是:哪些内存需要回收何时回收如何回收哪些内存需要回收对于Java内存运行时区域,程序计数器\虚拟机栈\本地方法栈三个部分是线程私有的,随线程而生,随... 查看详情

《深入理解java虚拟机系列二》---垃圾回收算法(通俗易懂)

...除算法2.3标记-复制算法2.4标记-整理算法前言本文对应《深入理解Java虚拟机》一书的第三章GC算法部分,这章主要讲的就是GC(GarbageCollection— 查看详情

深入理解java虚拟机总结(代码片段)

基础了解Java程序的执行过程:Java源代码文件(.Java文件)->JavaCompiler(Java编译器)->Java字节码文件(.class文件)->类加载器(ClassLoader)->RuntimeDataArea(运行时数据)->ExecutionEngine(执行引擎)各种基本类型:boolean、byte... 查看详情

深入理解java虚拟机--个人总结(持续更新)(代码片段)

深入理解Java虚拟机--个人总结(持续更新)每天按照书本学一点,会把自己的总结思考写下来,形成输出,持续更新,立帖为证--2020年7月7日开始第一次学习--2020年7月8日今天在百忙RushB中抽出时间,学了点习,计划明天把本地方... 查看详情

《深入理解计算机系统(第三版)》第二章信息的表示和处理

《深入理解计算机系统(第三版)》第二章信息的表示和处理??计算机本身是由处理器和存储器子通过系统组成。在核心部分,我们需要方法来表示基本数据类型,比如整数和实数运算的近似值。然后,我们考虑机器级指令如何... 查看详情

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

1.知识总结(主要对新知识)(1)计算机提供不同层次的抽象表示,来隐藏实际实现的复杂性文件是对I/O设备的抽象表示虚拟存储器是对主存和磁盘I/O设备的抽象表示进程是对处理器、主存和I/O设备的抽象表示(2)程序员必须... 查看详情

求新编日语教程第三版第二册的pdf文件感激不尽

参考技术A你说的这两个pdf都有的不用担心。 查看详情

《深入理解java虚拟机》------笔记

最近开始看《深入Java虚拟机》这本书了,刚好看到这篇文章,所以分享给大家,其实就是一些书本中重要的要点分条例写出来了,让人看书对整体结构的把控更加的清晰! 在C里面我们想执行一段自己编写的机器指令的方法... 查看详情

深入理解java虚拟机-java内存区域,垃圾回收机制和内存分配策略(代码片段)

本篇主要参考周志明老师的《深入理解Java虚拟机》第三版一个Java程序,首先要经过javac编译成.class文件,.class文件是给JVM进行识别的,JVM将.class文件加载到方法区,执行引擎会执行这些字节码,执行时,... 查看详情

深入理解java虚拟机第三部分.虚拟机执行子系统.1.类文件结构

无关性无关性的体现有两个方面:  1、平台无关性:可在不同的操作系统和机器指令集上执行,可在不同厂商的虚拟机平台上执行。  2、语言无关性:用不同编程语言写出的代码编译生成的文件都可以运行。实现思想: ... 查看详情