摘要: 本文部分摘自《深入理解 Java 虚拟机第三版》 概述 前端编译器(也叫编译器的前端)中的前端是指把 Java 文件转变为 Class 字节码文件的过程,顾名思义,前端编译器就是完成这一部分编译工作的。 前端编译器对代码的运行效率几乎没有任何优化措施可言,Java 虚拟机设计团队选择把对性能的优化全 阅读全文
posted @ 2021-02-04 20:30 低吟不作语 阅读(523) 评论(0) 推荐(0) 编辑
摘要: 本文部分摘自《深入理解 Java 虚拟机第三版》 概述 方法调用并不等同于方法中的代码被执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法)。之前讲过,一切方法调用在 Class 文件里面都是以符号引用的形式存储,而非方法在实际运行时内存布局中的入口地址(直接引用)。这个特性给 阅读全文
posted @ 2021-01-30 14:44 低吟不作语 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 本文部分摘自《深入理解 Java 虚拟机》 执行引擎 执行引擎是 Java 虚拟机核心的组成部分之一,作用就是用来执行字节码。在 Java 虚拟机规范中执行引擎只是一个概念模型,不同的虚拟机可以有不同的实现,通常会有解释执行(通过编译器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,或者 阅读全文
posted @ 2021-01-23 17:16 低吟不作语 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 本文部分摘自《深入理解 Java 虚拟机第三版》 概述 Java 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这个过程被称作虚拟机的类加载机制 与那些在编译时需要进行连接的语言不同,在 Java 语言里面,类 阅读全文
posted @ 2021-01-16 17:00 低吟不作语 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 本文部分摘自《深入理解 Java 虚拟机》 简介 Java 虚拟机的指令由操作码 + 操作数组成,其中操作码是代表某种特定操作含义的数字,长度为一个字节,而操作数就是此操作所需的一个或多个参数。由于 Java 虚拟机采用面向操作数栈而非寄存器的架构,所以大多数指令都不包括操作数,只有一个操作码 既然 阅读全文
posted @ 2021-01-08 10:56 低吟不作语 阅读(868) 评论(0) 推荐(1) 编辑
摘要: 本文部分摘自《深入理解 Java 虚拟机第三版》 概述 我们知道,Java 具有跨平台性,其实现基础就是虚拟机和字节码存储格式。Java 虚拟机不与 Java 语言绑定,只与 Class 文件所关联。Java 虚拟机作为一个通用的、与机器无关的执行平台,任何语言都可以将 Java 虚拟机作为它们的运 阅读全文
posted @ 2021-01-06 16:18 低吟不作语 阅读(540) 评论(0) 推荐(2) 编辑
摘要: 本文部分摘自《深入理解 Java 虚拟机第三版》 基础故障处理工具 Java 开发人员肯定都知道 JDK 的 bin 目录下有许多小工具,这些小工具除了用于编译和运行 Java 程序外,打包、部署、签名、调试、监控、运维等各种场景都可能会见到它们的影子 本文主要介绍的是用于监视虚拟机运行状态和进行故 阅读全文
posted @ 2021-01-04 01:06 低吟不作语 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 引言 在学习并发以前,我们习惯用一种简单的顺序叙事方式编程,首先是第一件事,然后是第二件事,第三件 ...... 总之,我们完全掌握着事情的发展。现在,我们来到了陌生的并发世界,你会发现原本值得信赖的事物突然变得不可靠了,比如将一个值设为 5,回头一看又变成 47 了,这就很匪夷所思了。并发就好似使 阅读全文
posted @ 2021-01-02 19:27 低吟不作语 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 本文部分摘自《深入理解 Java 虚拟机第三版》 概述 衡量垃圾收集器的三项指标分别是:内存占用、吞吐量和延迟。这三者共同构成一个“不可能三角”,即一款优秀的收集器最多可以同时达成其中两项 随着硬件性能的提升,对内存占用和吞吐量也有所助益,但对延迟却并非如此。比如内存扩大了,对延迟反而会带来负面效果 阅读全文
posted @ 2020-12-31 14:12 低吟不作语 阅读(1154) 评论(0) 推荐(0) 编辑
摘要: 本文部分摘自《深入理解 Java 虚拟机第三版》 根节点枚举 在之前关于可达性分析算法的介绍中我们讲过,我们需要先找出可固定作为 GC Roots 的节点,然后沿着引用链去寻找那些无用的垃圾对象。GC Roots 节点一般在全局性引用(例如常量和类静态属性)与执行上下文(例如栈帧中的本地变量表)中, 阅读全文
posted @ 2020-12-26 16:53 低吟不作语 阅读(704) 评论(0) 推荐(1) 编辑