马赛琦的博客

认识你自己 凡事勿过度

Scroll Down

《深入理解Java虚拟机》第三版 - 09 - Java线程与协程

Java线程与协程1. 线程的实现方式1.1. 内核线程实现使用内核线程实现的方式也被称为1:1实现。内核线程(Kernel-Level Thread,KLT)就是直接由操作系统内核(Kernel,下称内核)支持的线程,这种线程由内核来完成线程切换,内核通过操纵调度器(Scheduler)对线程进行

《深入理解Java虚拟机》第三版 - 08 - 程序编译与代码优化

1. 编译器分类前端编译器:.java文件转变为.class文件的过程(比如Javac)后端编译器:即时编译器(JIT编译器,Just In Time Compiler):运行期把字节码转变成本地机器码的过程(比如HotSpot的C1、C2编译器,Graal编译器)提前编译器:把程序编译成与目标机器

《深入理解Java虚拟机》第三版 - 07 - 虚拟机字节码执行引擎

1. 运行时栈帧结构Java虚拟机以方法作为最基本的执行单元,“栈帧”(Stack Frame)则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧包括了局部变量表、操作数栈、动态连接、方法返回地址和

《深入理解Java虚拟机》第三版 - 06 - 类加载机制

1. 类加载的时机一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading

《深入理解Java虚拟机》第三版 - 05 - 字节码指令

1. 字节码指令1.1. 指令构成 & 特点Java虚拟机的指令构成:操作码,Opcode:一个字节长度的、代表着某种特定操作含义的数字操作数,Operand:跟随其后的零至多个代表此操作所需的参数特点:Java虚拟机操作码长度限制为一个字节(0~255)指令集操作码总数不能超过256条Cl

《深入理解Java虚拟机》第三版 - 04 - 类文件结构

类文件结构1. 类文件结构1.1. Class文件结构Class文件是一组以8个字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用8个字节以上空间的数据项时,则

《深入理解Java虚拟机》第三版 - 02 - 垃圾收集器与内存分配策略

1. 如何判断对象可被GC(Garbage Collection)1.1. 引用计数算法在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。这就是引用计数算法。但是,在Java领域,至少主流的Java虚拟机里

《深入理解Java虚拟机》第三版 - 01 - Java内存区域与内存溢出异常

1. JVM运行时数据区根据《Java虚拟机规范》:1.1. 程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的

从法治到人生——《法治的细节》

1. 作为一名罗老师的粉丝我很喜欢罗老师,在B站看过不少他的视频。其中有看过一个视频(也可能是这本书的文字,记不清了),大致上是一个访谈节目,主持人问罗老师,你最喜欢的是自己的什么身份?罗老师讲是老师,然后就讲起他当年选择上法考培训课的目的很单纯,就为了“赚钱”,后来经济相对好一点了,他也仍然在培训