JVM
惊却一目
个人博客:www.jingqueyimu.com
微信公众号:惊却一目
展开
-
《深入理解 Java 虚拟机》笔记整理
正文一、Java 内存区域与内存溢出异常1、运行时数据区域程序计数器:当前线程所执行的字节码的行号指示器。线程私有。Java 虚拟机栈:Java 方法执行的内存模型。线程私有。本地方法栈:Native 方法执行的内存模型。线程私有。Java 堆:存放对象实例。分为新生代(Eden 空间、From Survivor 空间、To Survivor 空间)和老年代。线程共享。方法区:存...原创 2020-04-16 21:51:00 · 202 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:线程安全与锁优化
正文一、线程安全当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。1、Java 语言中的线程安全按线程安全的“安全程度”由强至弱排序,可以将多个线程的共享数据分为 5 类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。(1)不可...原创 2020-04-07 23:18:10 · 163 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:Java 内存模型与线程
正文由于计算机的处理器运算速度与它的存储和通信子系统速度的差距太大了,大量的时间都花费在磁盘 I/O、网络通信或者数据库访问上,导致处理器在大部分时间里都处于等待其他资源的状态。因此,为了充分利用计算机的处理器运算能力,现代计算机操作系统采用了多任务处理的方式,即让计算机并发处理多个任务。对于计算量相同的任务,程序线程并发协调得越有条不紊,效率自然就会越高;反之,线程之间频繁阻塞甚至死锁,将会...原创 2020-04-01 23:18:23 · 125 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:晚期(运行期)优化
正文在部分商用虚拟机(Sun HotSpot、IBM J9)中,Java 程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成本地机器码,并进行各种层次的优化。完成这个任务的编译器称为即时编译器(Just In Time Compiler,简称 JIT 编译器)。Jav...原创 2020-03-29 22:06:35 · 155 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:早期(编译期)优化
正文Java 语言的 3 类编译器:前端编译器:把 java 文件 转变成 class 文件。例如:Sun 的 Javac。JIT 编译器(即时编译器):后端运行期编译器,把字节码转变成机器码。例如:HotSpot VM 的 C1、C2 编译器。AOT 编译器(静态提前编译器):直接把 java 文件编译成本地机器代码。例如:GCJ(GNU Compiler for the Java)。...原创 2020-03-22 20:40:42 · 196 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:虚拟机字节码执行引擎
正文执行引擎是 Java 虚拟机最核心的组成部分之一。在不同的虚拟机实现里,执行引擎在执行 Java 代码时可能会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两者兼备。但从外观上看,所有 Java 虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。物理机与虚拟机的执行引擎:物理机的执行引擎:直接建立...原创 2020-03-15 23:24:04 · 205 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:虚拟机类加载机制
正文虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。一、类加载的时机1、类的生命周期加载 -> 连接(验证、准备、解析) -> 初始化 -> 使用 -> 卸载加载、验证、准备、初始化和卸载这 5 个阶段的顺序是确定的,类的加载过程必须按这种顺序按部就班...原创 2020-03-09 22:00:39 · 97 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:类文件结构
正文一、无关性的基石1、两种无关性平台无关性: Java 程序的运行不受计算机平台的限制,“一次编写,到处运行”。语言无关性: Java 虚拟机只与 Class 文件关联,并不关心 Class 文件的来源是何种语言。2、无关性的实现基础各种不同平台的虚拟机所有平台都统一使用的字节码存储格式二、Class 类文件的结构Class 类文件是一组以 8 字节为基础单位的二进制流...原创 2020-02-28 23:52:24 · 179 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:虚拟机性能监控与故障处理工具
正文一、JDK 的命令行工具JDK 的 bin 目录下提供了一些用于监视虚拟机和故障处理的命令行工具。名称主要作用jpsJVM Process Status Tool,显示正在运行的虚拟机进程jstatJVM Statistics Monitoring Tool,收集虚拟机各方面的运行数据jinfoConfiguration Info for Java,...原创 2020-01-14 22:45:41 · 225 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:垃圾收集器与内存分配策略
正文垃圾收集器关注的是 Java 堆和方法区,因为这部分内存的分配和回收是动态的。只有在程序处于运行期间时才能知道会创建哪些对象,也才能知道需要多少内存。虚拟机栈和本地方法栈则不需要过多考虑回收的问题,因为栈中每一个栈帧分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收具有确定性。一、对象已死吗垃圾收集器在对堆进行回收前,第一件事就是要确定堆中对象哪些还“存活”...原创 2019-12-22 22:47:53 · 146 阅读 · 0 评论 -
《深入理解 Java 虚拟机》读书笔记:Java 内存区域与内存溢出异常
前言最近开始看这本书,记得前段时间拿起这本书的时候,心情是相当沉重的!当时的剧本是这样的——内景。家里 - 下午我(画外):唉,有点无聊啊!(偶然撇过书架)这么多书得看到什么时候啊,要不要拿一本翻翻呢?但是在家里好像有点看不下去啊,是太安逸了吗?最近那本《图解 HTTP》也还没看完,感觉暂时有点不想看了。(走到书架前)还是挑几本优先级比较高的带到███下班的时候看吧。(沉思)嗯,这本带过去...原创 2019-12-04 22:00:48 · 158 阅读 · 0 评论