
深入理解Java虚拟机读书笔记
文章平均质量分 91
《深入理解Java虚拟机》读书笔记
周志明 著
机械工业出版社
小Cesar
这个作者很懒,什么都没留下…
展开
-
第12章 Java内存模型与线程
第12章 Java内存模型与线程 12.1 概述 略 12.2 硬件的效率与一致性 计算机的存储设备与处理器的运算速度有着几个数量级的差距 现代计算机不得不加入一层或多层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之前的缓冲 将运算需要使用的数据复制到缓存中,让运算能够快速运行,当运算结束后再从缓存同步回内存中 除了增加高速缓存以外,为了使处理器内部的运算单元能尽量被充分运用,处理器可能会对输入代码进行乱序执行优化,即指令重排序优化 在多核处理器系统中,每个处理器都拥有自己的高读原创 2021-03-03 17:29:38 · 90 阅读 · 1 评论 -
第7章 虚拟机类加载时机
第7章 虚拟机类加载时机 7.1 概述 Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能被运行和使用 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,该过程被称作虚拟机的类加载机制 Java语言里类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略让Java语言进行提前编译会面临额外的困难,也会让类加载时增加性能开销,但Java可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现原创 2021-03-03 17:17:02 · 102 阅读 · 2 评论 -
第3章 垃圾收集器与内存分配策略
第3章 垃圾收集器与内存分配策略 3.1 概述 3.2 对象已死? 3.2.1 引用计数算法 略 3.2.2 可达性分析算法 Java技术体系中固定可作为GC Roots的对象 在虚拟机栈中引用的对象 在方法区中类静态属性引用的对象 在方法区中常量引用的对象 在本地方法栈中本地方法引用的对象 Java虚拟机内部的引用 所有被同步锁持有的对象 根据用户所选用的垃圾收集器以及当前回收的内存区域不同,还可以有其他对象临时加入,共同构建完整的GC Roots集合 如果只针对Java堆中某一块区域发起垃圾原创 2021-03-03 17:14:31 · 808 阅读 · 2 评论 -
第2章 Java内存区域与内存溢出异常
第2章 Java内存区域与内存溢出异常 2.1 概述 2.2 运行时数据区域 2.2.1 程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令 Java虚拟机中的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的。在任何一个确定的时间,一个处理器都只会执行一条线程中的指令 为了保证在线程切换后能恢复到正确的执行位置,这个时候每条线程就都需要一个独立的程序计数器,而各线程之间计数器是互原创 2021-03-03 17:11:58 · 394 阅读 · 1 评论