
深入理解Java虚拟机
梦里梦不出梦里梦的梦
这个作者很懒,什么都没留下…
展开
-
深入理解Java虚拟机 | 第一篇:走进Java
首先声明:这一系列是本人阅读周志明老师的《深入理解Java虚拟机》第二版后自己做的个人总结,在这里记录我认为的重点。一方面是回顾学习内容加深理解,另一方面,是方便自己以后重新阅读《深入理解Java虚拟机》。一:Java技术体系从传统意义上来讲,Sun公司所定义的Java技术体系包括:Java程序设计语言各种硬件平台上的Java虚拟机Class文件格式Java API类库来至商业机构和开源社区的第三...原创 2018-07-04 14:14:40 · 3089 阅读 · 0 评论 -
深入理解Java虚拟机 | 第二篇:Java内存区域
对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”又是从事最基础工作的“劳动人民”——既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,由虚拟机管理内存这一切看起来都很美好。不过,也...原创 2018-07-04 15:29:33 · 436 阅读 · 0 评论 -
深入理解Java虚拟机 | 第三篇:垃圾收集器与内存分配策略
说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。从上一篇文章中我们得知,程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,这部分内存的分配和回收基本都是确定的。但是Java堆和方法区则不一样,一个接口中的多个实...原创 2018-07-04 17:06:42 · 401 阅读 · 0 评论 -
深入理解Java虚拟机 | 第四篇:类文件的结构
JVM作为一个通用的、机器无关的执行平台,任何其他语言的实现者都可以将Java虚拟机作为语言的产品交付媒介。理论上任何语言编写的程序都可以运行在JVM上面,只要你代码在编译的时候生成的是符合Java虚拟机编程规范的.class文件,虚拟机并不关心Class的来源是何种语言。一:class文件结构1、每个Class文件的头4个字节称为魔数(Magic Number),它的唯一作用是确定这个文件是否为...原创 2018-07-05 17:26:02 · 400 阅读 · 0 评论 -
深入理解Java虚拟机 | 第五篇:虚拟机类加载机制
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证、准备、解析3个部分统称为连接(Linking)。一:立即对类进行初始化的条件虚拟机规范则是严格规定了有且...原创 2018-07-06 14:13:27 · 374 阅读 · 0 评论 -
深入理解Java虚拟机 | 第六篇:虚拟机字节码执行引擎
执行引擎是Java虚拟机最核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。一:运行时栈帧结构栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执...原创 2018-07-06 19:12:32 · 456 阅读 · 0 评论