重学Java虚拟机
懋为
居安思危,思则有备,有备无患,敢以此规。
展开
-
重学Java虚拟机(一)—— JVM内存模型
前言 众所周知,Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。 JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但JVM通常是在软件上而不是在硬件上实现。JVM是Java平台无关的基础,在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为J原创 2018-02-01 23:35:30 · 267 阅读 · 0 评论 -
重学Java虚拟机(三)—— Java类文件结构
前言 “Write Once, Run Anywhere”,这是Java刚诞生时提出的一个非常著名的宣传口号。各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码是构成平台无关性的基石。而使用Java编译器可以将Java代码编译成存储字节码的Class文件,本文我们来探析一下Class文件。 Java类文件结构 Class文件是一组以8个字节为基础单位的二进制流。Class文...原创 2018-02-07 23:51:56 · 172 阅读 · 0 评论 -
重学Java虚拟机(二)—— JVM内存管理
前言 Java GC机制已经日臻完善,确实降低了开发人员不少编程难度。但是,作为一名java编程人员,学会JVM内存管理和回收机制,这可以帮助我们在日常工作中排查各种内存溢出或泄露问题,解决性能瓶颈,达到更高的并发量,写出更高效的程序。 对象存活判断策略 判断一个对象是否存活的算法有两种:引用计数算法和根搜索算法。 引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时...原创 2018-02-04 11:20:07 · 190 阅读 · 2 评论 -
重学Java虚拟机(四)—— 类加载机制
前言 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类加载的时机 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中验证、准备和解析三个部分统称为连接。 虚拟机规范中并没有进行强制约束什么情况下需要开始...原创 2018-02-11 17:25:20 · 175 阅读 · 0 评论