《深入理解Java虚拟机》一书中将类的加载过程放到了类加载器前面一节,但在这里我想先讲“类加载器”。在上一篇类加载时机中我们用大量篇幅来讲解了类加载过程中的5个步骤的最后一步——初始化。在这一节中,我们实际是在讲解类加载过程5个步骤的第一步——加载。 我们再次回顾类加载过程的5个步骤: 类加载过程的 ...
分类:
其他好文 时间:
2016-09-20 01:35:34
阅读次数:
186
一、匿名内部类定义: 1、匿名内部类是内部类中的一种。内部类有:成员内部类,方法内部类,匿名内部类,静态嵌套内部类。 2、内部类在java虚拟机编译后还是会称为class文件。比如有一个A类,一个B类,其中B类是A类的内部类编译之后有两个class文件:A.class 和 A$B.class 3、内 ...
分类:
其他好文 时间:
2016-09-19 21:00:12
阅读次数:
166
由于道行不够深,所以此篇类加载机制的讲解主要来自于《深入理解Java虚拟机——JVM高级特性与最佳实践》的第7章 虚拟机类加载机制。 在前面《初识Java反射》中我们在开头提到要了解Java反射,就得要了解虚拟机的类加载机制。在这里,我们来试着窥探一下何为类加载。 “虚拟机把描述类的数据从Class ...
分类:
其他好文 时间:
2016-09-19 01:18:15
阅读次数:
204
计算机高级语言按照程序的执行方式可以分为编译型和解释型两种方式,java属于编译型和解析型的结合。由java语言编写的程序需要经过编译步骤,在编译之后不会生成特定平台的机器码,而是生成与平台无关的字节码(也就是*.class文件)。使用java解析器(这里是java虚拟机JVM)来解析执行*.cla ...
分类:
编程语言 时间:
2016-09-18 14:51:10
阅读次数:
182
虚拟机每次方法的调用和返回都伴随着栈帧的入栈和出栈,而每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用(表明该栈帧执行的是哪个方法),持有这个引用是为了支持方法调用中的动态连接。这些符号引用中一部分会在类加载阶段或者第一次使用的时候转换成直接引用(即在验证、准备、解析的解析阶段,比如说类中的 ...
分类:
编程语言 时间:
2016-09-17 13:27:05
阅读次数:
198
“代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是变成语言发展的一大步”,这句话出自《深入理解JAVA虚拟机》一书,后面关于jvm的系列文章主要都是参考这本书。 JAVA源码编译由三个过程组成: 1、源码编译机制。 2、类加载机制 3、类执行机制 我们这里主要介绍编译和类加载这两 ...
分类:
编程语言 时间:
2016-09-17 12:04:35
阅读次数:
164
Jvm(Java虚拟机)内存模型 从Jvm内存模型中入手对于理解GC会有很大的帮助,不过这里只需要了解一个大概,说多了反而混淆视线。 Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆。堆是运行时数据区域,所有类实例和数组的内存均从此处分配。非堆是JVM留给自己用的,包含方法区、JVM内部处理或 ...
分类:
移动开发 时间:
2016-09-17 10:39:50
阅读次数:
366
在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、连接和初始化,其中连接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:1、装载2、连接3、初始化 一、装载阶段 装载阶段由三个基本动作组成1、通过类型的完全限定名,产生一 ...
分类:
编程语言 时间:
2016-09-17 00:17:29
阅读次数:
137
《Java并发编程实战》 人手一本不用多说了。 《深入理解 Java 虚拟机 第2版》 深入理解虚拟机并不是那么难,Java程序员都该看看,很多知识其实是必须的。另外还有几本类似主题的,忽然一下子都出来了。 《Java性能优化权威指南》 虽然后面的章节好像用处不大,前面有些部分还是值得看,不过Gos ...
分类:
其他好文 时间:
2016-09-16 22:46:29
阅读次数:
200
一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。 Jav ...
分类:
编程语言 时间:
2016-09-16 21:19:51
阅读次数:
157