摘要: 一、虚拟机栈概述 1.1 出现的背景 由于跨平台性的设计,Java指令都是根据栈来设计的。优点是跨平台、指令集小、变压器你容易实现;缺点是性能下降,实现同样的功能需要更多的指令。 1.2 内存中的栈与堆 栈是运行时的单位,而堆是存储的单位。 栈解决程序的运行问题,即程序如何执行或者如何处理数据。堆解 阅读全文
posted @ 2021-02-09 12:02 CleverZiv 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 先聊聊本地方法 简单地讲,一个 Native Method 就是一个Java调用非Java代码的接口。一个 Native Method 是这样一个Java方法:该方法的实现由非Java语言实现,比如C。在定义一个native method 时,并不提供实现体,因为其实现体是由非java语言在外面上线 阅读全文
posted @ 2021-02-04 23:17 CleverZiv 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 一、Map 整体结构 1.1 类继承结构 1.2 实现类简介 Map是一种把键对象和值对象映射的集合,是一个顶层接口,定义了Map的基本操作。它的每一个元素都包含一对键对象和值对象。 Map没有继承Collection接口。 AbstractMap:实现了Map接口的抽象类。Map的基本实现,其他M 阅读全文
posted @ 2021-02-03 21:48 CleverZiv 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式中的fail-fast 一、什么是fail-fast 看容器源码时,经常会在迭代器部分的注释看到这样类似的一句话: The returned list iterator is fail-fast. 很显然,fail-fast是用来描述迭代器具有的某种特性,那这种特性是什么呢? 由itera 阅读全文
posted @ 2021-02-02 17:29 CleverZiv 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 一、LinkedList简介 LinkedList和ArrayList与Vector一样,实现了Lits接口,但它执行某些操作如插入(此处指随机插入,如果是依次在末尾插入,不一定效率更高)、和删除元素操作比ArrayList与Vector更高效,而随机访问操作效率低。除此之外,LinkedList还 阅读全文
posted @ 2021-02-02 01:29 CleverZiv 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 一、Vector简介 1.1 类继承结构 1.2 数据结构 二、源码 2.1 注释 Vector与ArrayList是非常相似的,注释中的说明也是类似的,可参考上篇博文“ArrayList源码阅读”。注释中有这样一句话:“Vector是同步的,如果不需要线程安全的实现,推荐使用ArrayList代替 阅读全文
posted @ 2021-01-31 23:44 CleverZiv 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 前言 本文将通过阅读 JDK 中的 ArrayList 的源码,来全面分析 ArrayList 的一些特性。 **2021-01-30更新:**回过头来再看这片源码分析文章,觉得两年前的自己读源码,过于追求代码细节。这个方式也使得自己在后面阅读更复杂的源码过程中吃了亏。阅读源码应更多地去体会其整体设 阅读全文
posted @ 2021-01-30 15:24 CleverZiv 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 一、基本介绍 1.1 概念 JVM 中的程序计数寄存器(Program Counter Register)中,Register 的命名原语 CPU 的寄存器,寄存器存储指令相关的现场信息,CPU 只有把数据加载到寄存器中才能运行。 JVM 中的寄存器并非广义上所指的物理寄存器,或许将其翻译为PC计数 阅读全文
posted @ 2020-11-06 21:13 CleverZiv 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 垃圾回收95%在java堆中,5%在方法区中(方法区是java虚拟机中的一个概念,具体的实现是“永久代”、“元空间”,其中元空间是JDK 8以后的实现,使用的是本地内存) 一个 JVM 实例对应一个 Runtime对象 线程 Java线程与本地线程 线程是一个程序里的运行单元。JVM 允许一个应用有 阅读全文
posted @ 2020-11-06 21:11 CleverZiv 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 一、JVM内存结构 1.1 内存结构 概略图 1.2 内存结构--详细图 二、类加载器子系统的作用 类加载器子系统负责从文件系统或网络中加载.Class文件,文件需要有特定的标识(cafe babe)。 ClassLoader只负责.Class文件的加载,至于它是否可以运行,由执行引擎决定。 加载的 阅读全文
posted @ 2020-11-01 20:38 CleverZiv 阅读(388) 评论(2) 推荐(1) 编辑