java虚拟机
文章平均质量分 94
阅读《深入理解JAVA虚拟机》第三版时的笔记
菜菜小陈不怕困难
这个作者很懒,什么都没留下…
展开
-
java字节码文件的属性表
属性表(attribute_info)在前面的讲解之中已经出现过数次,Class文件、字段表、方法表都可以携带自己的属性表集合,以描述某些场景专有的信息。属性表集合的限制稍微宽松一些,不再要求各个属性表具有严格顺序,并且《Java虚拟机规范》允许只要不与已有属性名重复,任何人实现的编译器都可以向属性表中写入自己定义的属性信息,Java虚拟机运行时会忽略掉它不认识的属性。为了能正确解析Class文件,《Java虚拟机规范》最初只预定义了9项所有Java虚拟机实现都应当能识别的属性,而在最新的《Java虚拟机规原创 2022-06-01 19:05:18 · 936 阅读 · 0 评论 -
java 类文件结构
6.1 概述代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一 大步。我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,越来越多的程序语言选择了与操作系统和机器指令集无关的、平台中立的格式作为程序编译后的存储格式。6.2 无关性的基石各种不同平台的Java虚拟机,以及所有平台都统一支持的程序存储格式——字节码(Byte Code) 是构成平台无关性的基石。虚拟机的 另外一种中立特性——语言无关性正在越来越被开发者所重视。时原创 2022-06-01 18:55:13 · 490 阅读 · 0 评论 -
Java内存区域与内存溢出异常
第2章 Java内存区域与内存溢出异常2.2 运行时数据区域2.2.1 程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令.它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器.原创 2022-05-22 16:51:57 · 629 阅读 · 0 评论 -
垃圾收集器的的一些基本算法
目录3.1 概述3.2 对象已死?3.2.1 引用计数算法3.2.2 可达性分析算法3.2.3 再谈引用3.2.4 生存还是死亡?3.2.5 回收方法区3.3 垃圾收集算法3.3.1 分代收集理论3.3.2 标记-清除算法3.3.3 标记-复制算法3.3.4 标记-整理算法3.4 HotSpot的算法细节实现3.4.1 根节点枚举3.4.2 安全点3.4.3 安全区域3.4.4 记忆集与卡表3.4.5 写屏障3.4.6 并发的可原创 2022-05-27 13:18:52 · 158 阅读 · 0 评论 -
经典垃圾收集器
3.5 经典垃圾收集器各款经典收集器之间的关系如图3-6所示。如果两个收集器之间存在连线,就说明它们可以搭配使用,图中收集器所处的区域,则表示它是属于新生代收集器抑或是老年代收集器。JDK9的标志代表在JDK9中取消该组合3.5.1 Serial收集器Serial收集器是最基础、历史最悠久的收集器,是一个单线程工作的收集器,但它的“单线 程”的意义并不仅仅是说明它只会使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收.原创 2022-05-27 13:23:10 · 97 阅读 · 0 评论 -
Shenandoah收集器和ZGC收集器的简单介绍
3.6 低延迟垃圾收集器衡量垃圾收集器的三项最重要的指标是:内存占用(Footprint)、吞吐量(Throughput)和延迟(Latency),三者共同构成了一个“不可能三角”。 要在这三个方面同时具有卓越表现的“完美”收集器是极其困难甚至是不可能的图3-14中浅色阶段表示必须挂起用户线程,深色表示收集器线程与用户线程是并发工作的。CMS和G1分别使用增量更新和原始快照(见3.4.6节)技术,实现了标记阶段的并发,不会因管理的堆内存变大,要标记的对象变多而导致停顿时间随之增长。最后.原创 2022-05-27 13:28:07 · 557 阅读 · 0 评论