上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 81 下一页
摘要: 一、原子性、 可见性与有序性 介绍完Java内存模型的相关操作和规则后, 我们再整体回顾一下这个模型的特征。 Java内存模型是围绕着在并发过程中如何处理原子性、 可见性和有序性这三个特征来建立的, 我们逐个来看一下哪些操作实现了这三个特性。 1.原子性(Atomicity) 由Java内存模型来直 阅读全文
posted @ 2022-03-22 13:27 Mars.wang 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 一、硬件的效率与一致性 绝大多数的运算任务都不可能只靠处理器“计算”就能完成。 处理器至少要与内存交互, 如读取运算数据、存储运算结果等, 这个I/O操作就是很难消除的(无法仅靠寄存器来完成所有运算任务) 。 由于计算机的存储设备与处理器的运算速度有着几个数量级的差距, 所以现代计算机系统都不得不加 阅读全文
posted @ 2022-03-22 10:14 Mars.wang 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 四、动态类型语言支持 Java虚拟机的字节码指令集的数量自从Sun公司的第一款Java虚拟机问世至今, 二十余年间只新增过一条指令, 它就是随着JDK 7的发布的字节码首位新成员——invokedynamic指令。 这条新增加的指令是JDK 7的项目目标: 实现动态类型语言(Dynamically 阅读全文
posted @ 2022-03-21 14:27 Mars.wang 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 三、方法调用 方法调用并不等同于方法中的代码被执行, 方法调用阶段唯一的任务就是确定调用哪一个方法 , 暂时还未涉及方法内部的具体运行过程。 在程序运行时, 进行方法调用是最普遍、 最频繁的操作之一。 但第7章中已经讲过, Class文件的编译过程中不包含传统程序语言编译的连接步骤, 一切方法调用在 阅读全文
posted @ 2022-03-21 13:52 Mars.wang 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 一、概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念, 这两种机器都有代码执行能力, 其区别是物理机的执行引擎是直接建立在处理器、 缓存、 指令集和操作系统层面上的, 而虚拟机的执行引擎则是由软件自行实现的, 因此可以不受物理条件制约地定制指令集与执行引擎的 阅读全文
posted @ 2022-03-21 11:36 Mars.wang 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 一、概述 在Class文件中描述的各类信息, 最终都需要加载到虚拟机中之后才能被运行和使用。 而虚拟机如何加载这些Class文件, Class文件中的信息进入到虚拟机后会发生什么变化, 是本章将要讲解的内容。 Java虚拟机把描述类的数据从Class文件加载到内存, 并对数据进行校验、 转换解析和初 阅读全文
posted @ 2022-03-18 14:10 Mars.wang 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 转自:https://www.jianshu.com/p/9dd47484e700 1. JDK1.7(JSR-292)对动态类型的直接支持 invokevirtual invokespecial invokestatic invokeinterface的第一个参数都是被调用方法的符号引用(CONS 阅读全文
posted @ 2022-03-18 13:11 Mars.wang 阅读(288) 评论(0) 推荐(0) 编辑
摘要: Java虚拟机的指令由一个字节(字节码总数不会超过256)的代表着某种特定操作含义的数字(称为操作码, Opcode)以及跟随其后的零至多个代表此操作所需的参数(称为操作数) 构成。 由于Java虚拟机采用面向操作数栈而不是面向寄存器的架构, 所以大多数指令都不包含操作数, 只有一个操作码, 指令参 阅读全文
posted @ 2022-03-18 10:22 Mars.wang 阅读(239) 评论(0) 推荐(0) 编辑
摘要: Class文件是一组以8个字节为基础单位的二进制流, 各个数据项目严格按照顺序紧凑地排列在文件之中, 中间没有添加任何分隔符, 这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据, 没有空隙存在。 当遇到需要占用8个字节以上空间的数据项时, 则会按照高位在前的方式分割成若干个8个字节进 阅读全文
posted @ 2022-03-17 15:59 Mars.wang 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 垃圾收集器与内存分配策略 虚拟机栈、本地方法栈和程序计数器随线程而生,也随线程而灭。这几个区域的内存分配与回收非常确定。 java堆和方法区则充满了不确定性。 对java对象进行回收前,需要考虑的一个问题时,哪些java对象可以被回收? 一、引用计数算法 在对象中添加一个引用计数器, 每当有一个地方 阅读全文
posted @ 2022-03-16 16:24 Mars.wang 阅读(28) 评论(0) 推荐(0) 编辑
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 81 下一页