合集-《深入理解Java虚拟机》读书笔记

《深入理解Java虚拟机》读书笔记:Java内存区域
摘要:《深入理解Java虚拟机》读书笔记:Java内存区域Java内存区域包含程序计数器、虚拟机栈、本地方法栈、Java堆、方法区五个区域。 阅读全文
posted @ 2023-08-03 18:33 知北游z 阅读(527) 评论(0) 推荐(1) 编辑
《深入理解Java虚拟机》读书笔记:HotSpot虚拟机对象探秘
摘要:《深入理解Java虚拟机》读书笔记:HotSpot虚拟机对象探秘选择哪种分配方式由Java堆是否规整决定,而Java堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定。因此,在使用Serial、ParNew等带Compact过程的收集器时,系统采用的分配算法是指针碰撞,而使用CMS这种基于Mark-Sweep算法的收集器时,通常采用空闲列表。这两种对象访问方式各有优势:使用句柄来访问的最大好处就是reference中存储的是稳定的句柄地址,在对象被移动(垃圾收集时移动对象是非常普遍的行为)时只会改变句柄中的实例数据指针,而reference本身不需要修改。 阅读全文
posted @ 2023-08-04 22:00 知北游z 阅读(105) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:判断对象是否存活
摘要:《深入理解Java虚拟机》读书笔记:判断对象是否存活本节内容的概要如下; 对象已死吗? 一、判断对象是否存活的算法 1、引用计数器算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。 客观地说,引用计数算法(Reference Counting)的实现简 阅读全文
posted @ 2023-08-05 01:12 知北游z 阅读(106) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:垃圾收集算法
摘要:由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程。 垃圾收集算法概要 1、 标记-清除算法 标记-清除算法最基础的收集算法是“标记-清除”(Mark-Sweep)算法,算法分为“标记”和“清 阅读全文
posted @ 2023-08-10 23:08 知北游z 阅读(63) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:HotSpot的算法实现
摘要:HotSpot的算法实现 HotSpot的算法实现概要 1、枚举根节点 由于目前的主流Java虚拟机使用的都是准确式GC(这个概念在第1章介绍Exact VM对Classic VM的改进时讲过),所以当执行系统停顿下来后,并不需要一个不漏地检查完所有执行上下文和全局的引用位置,虚拟机应当是有办法直接 阅读全文
posted @ 2023-08-11 14:59 知北游z 阅读(98) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:垃圾收集器
摘要:垃圾收集器 HotSpot虚拟机包含的所有收集器如图3-5所示。图3-5展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。 新生代收集器:Serial、ParNew、Parallel Scavenge,新生代收集器均采用复制算法 老年代收集器:Serial Old 阅读全文
posted @ 2023-08-12 20:07 知北游z 阅读(62) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:内存分配策略
摘要:Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。关于回收内存这一点,我们已经使用了大量篇幅去介绍虚拟机中的垃圾收集器体系以及运作原理,现在我们再一起来探讨一下给对象分配内存的那点事儿。对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。 阅读全文
posted @ 2023-08-13 21:44 知北游z 阅读(84) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:虚拟机性能监控与故障处理工具
摘要:一、JDK的命令行 虚拟机性能监控与故障处理工具 工具 1、jps:虚拟机进程状况工具 jps主要用来输出JVM中运行的进程状态信息,它的功能也和ps命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(L 阅读全文
posted @ 2023-08-14 21:49 知北游z 阅读(30) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:Class类文件的结构
摘要:Sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的的程序存储格式——字节码(ByteCode),从而实现了程序的“一次编写,到处运行”。“Class文件”这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。使用Java编译器可以把Java代码编译为存储字节码的Class文件。 阅读全文
posted @ 2023-08-15 18:43 知北游z 阅读(101) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:字节码指令简介
摘要:字节码指令简介 Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的架构(这两种架构的区别和影响将在第8章中探讨),所以大多数的指 阅读全文
posted @ 2023-08-17 22:31 知北游z 阅读(109) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记: 虚拟机类加载的时机和过程
摘要:虚拟机类加载的时机和过程 一、类加载的时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载( 阅读全文
posted @ 2023-08-21 22:48 知北游z 阅读(99) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记: 类加载器
摘要:类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一,它最初是 阅读全文
posted @ 2023-08-22 23:06 知北游z 阅读(116) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:运行时栈帧结构
摘要:代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。 一、概述 在Java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种虚拟机执行引擎的统一外观(Facade)。在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能会有解释执行(通 阅读全文
posted @ 2023-08-23 23:10 知北游z 阅读(32) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:方法调用
摘要:方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍、最频繁的操作,但前面已经讲过,Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号 阅读全文
posted @ 2023-08-24 22:17 知北游z 阅读(53) 评论(0) 推荐(0) 编辑
《深入理解Java虚拟机》读书笔记:基于栈的字节码解释执行引擎
摘要:虚拟机是如何调用方法的内容已经讲解完毕,从本节开始,我们来探讨虚拟机是如何执行方法中的字节码指令的。上文中提到过,许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,在本章中,我们先来探讨一下在解释执行时,虚拟机执行 阅读全文
posted @ 2023-08-25 16:09 知北游z 阅读(90) 评论(0) 推荐(0) 编辑

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