12 2022 档案

摘要:特别说明: monitor在中文书籍有多种翻译,本文档统一使用:对象锁 | 书籍 | 中文翻译 | | | | | 《java编程思想(第4版)》 | 监视器、对象的锁 | | 《深入理解Java虚拟机(第3版)》 | 对象的锁 | | 《Java虚拟机规范(Java SE 8版)》 | 同步锁 | 阅读全文
posted @ 2022-12-29 23:57 拿了桔子跑-范德依彪 阅读(440) 评论(0) 推荐(0) 编辑
摘要:1 基本类型 Java里面只有八种原始类型,其列表如下: 实数:double、float 整数:byte、short、int、long 字符:char 布尔值:boolean 复杂类型和基本类型的内存模型本质上是不一样的,简单数据类型的存储原理是这样的:简单数据类型不存在“引用”的概念,都是直接存储 阅读全文
posted @ 2022-12-27 15:47 拿了桔子跑-范德依彪 阅读(67) 评论(0) 推荐(0) 编辑
摘要:1 String不可变性 String类被声明为 final,因此它不可被继承。 内部使用char数组存储数据,该数组被声明为final,这意味着value数组初始化之后就不能再指向其它数组。 String内部没有改变value数组的方法 String类中所有修改String值的方法,如果内容没有改 阅读全文
posted @ 2022-12-26 23:28 拿了桔子跑-范德依彪 阅读(525) 评论(0) 推荐(0) 编辑
摘要:1 final基本用法 final:“这是无法改变的" final可以修饰:变量、参数、方法、类 1.1 final修饰变量 修饰变量(变量、局部变量),当变量类型为: 基本类型,一旦被赋值,该值不能被改变。 引用类型,一旦引用被初始化指向一个对象,就不能指向别的对象,但对象内容可以被修改 数据类型 阅读全文
posted @ 2022-12-19 19:26 拿了桔子跑-范德依彪 阅读(217) 评论(0) 推荐(0) 编辑
摘要:1 锁优化历史 synchronized 从 JDK1.0到JDK1.5 ,效率低 JDK1.5到JDK1.6,JVM团队对synchronized进行深度优化,加入了:适应性自旋、锁消除、锁膨胀、轻量级锁、偏向锁 等优化技术 JDK1.5 开始,加入java.util.concurrent,提供A 阅读全文
posted @ 2022-12-16 20:05 拿了桔子跑-范德依彪 阅读(112) 评论(0) 推荐(0) 编辑
摘要:1 线程安全定义 含糊的定义:如果一个对象可以安全地被多个线程同时使用,那它就是线程安全的 严谨的定义: 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对 阅读全文
posted @ 2022-12-16 15:10 拿了桔子跑-范德依彪 阅读(84) 评论(0) 推荐(0) 编辑
摘要:1 线程的实现 主流操作系统都提供线程的实现,在这基础上,上层应用可以构建自己的线程实现方式(Java、php、go的线程实现各不一样)。 三种线程实现方式:内核线程实现(1:1实现),用户线程实现(1:N实现), 用户线程加轻量级进程混合实现(N:M实现) 1.1 内核线程实现 内核线程:直接由操 阅读全文
posted @ 2022-12-15 20:25 拿了桔子跑-范德依彪 阅读(125) 评论(0) 推荐(0) 编辑
摘要:特别说明:本篇侧重理论,涉及的定义和结论,都是基于Java虚拟机规范定义或者由规范推导出来。因此学习本篇内容前,必须对虚拟机有深入的理解,特别是字节码指令部分。 1 Java内存模型背景 计算机为了弥补处理器与内存的访存速度差异,引入高速缓存,构成存储器层次结构(详情参考3、计算机系统漫游 。 带来 阅读全文
posted @ 2022-12-14 18:05 拿了桔子跑-范德依彪 阅读(29) 评论(0) 推荐(0) 编辑
摘要:特别说明: 本章内容基于HotSpot虚拟机: 编译器指HotSpot内置的即时编译器 虚拟机指HotSpot 机器码:能够被被当前机器直接执行的代码,机器属于某个平台:SPARC、x86-AMD64、ARMv8-AArch64 1 广义理解:解释执行与编译执行 阅读原文2天,我仍然没理解 什么是解 阅读全文
posted @ 2022-12-12 23:59 拿了桔子跑-范德依彪 阅读(276) 评论(0) 推荐(0) 编辑
摘要:1 编译器分类 Java的编译过程:将源代码转化成机器可执行的二进制代码。实际上,编译过程,是分阶段进行的,由此产生了不同的编译器。 编译器分类: | 类别 | 工作内容 | 代表 | | | | | | 前端编译器 | 把源代码转变成字节码 | JDK的Javac、Eclipse编译器(ECJ) 阅读全文
posted @ 2022-12-08 17:29 拿了桔子跑-范德依彪 阅读(635) 评论(0) 推荐(0) 编辑
摘要:1 解释执行与编译执行 解释执行:通过解释器执行 编译执行:通过即时编译器产生本地代码(机器码)执行 虚拟机的执行引擎支持以上两种方式 java语言的编译及执行过程: C语言的编译过程: 2 基于栈/寄存器的指令集 基于栈的指令集架构:指令不带参数,使用操作数栈中的数据作为指令的运算输入,指令的运算 阅读全文
posted @ 2022-12-07 17:57 拿了桔子跑-范德依彪 阅读(56) 评论(0) 推荐(0) 编辑
摘要:1 动态/静态类型语言比较 | | 对比1 | 对比2 | 对比3 |举例 | | | | | | | | 动态 | 运行时进行类型检查 | 在运行期确定类型,灵活 | 变量无类型而变量值才有类型 |Groovy、JavaScript、Lua、PHP、Python| | 静态 | 编译时检查 | 编 阅读全文
posted @ 2022-12-06 17:58 拿了桔子跑-范德依彪 阅读(31) 评论(0) 推荐(0) 编辑
摘要:特别备注: 本章节内容我认为比较难理解,对于【编译、运行阶段方法选择分析】这部分内容还不是很理解,需要多次去理解消化todo 1 关于方法调用 javac编译后Class文件存储方法的符号引用,而不是直接引用(方法在实际运行时内存地址) 该特性给Java带来了更强大的动态扩展能力 方法调用阶段的任务 阅读全文
posted @ 2022-12-04 20:28 拿了桔子跑-范德依彪 阅读(46) 评论(0) 推荐(0) 编辑
摘要:1 初谈执行引擎 一、关于Java虚拟机和计算机系统层面的物理机 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力 物理机的执行引擎是直接建立在处理器、缓存、指令集(例如x86-64)和操作系统面上 虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引 阅读全文
posted @ 2022-12-01 14:37 拿了桔子跑-范德依彪 阅读(43) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示