Java虚拟机
文章平均质量分 86
冰霜秋月
这个作者很懒,什么都没留下…
展开
-
虚拟机类加载机制解析(二)
类加载器一、类与类加载器 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。即比较二个类是否“相等”,只有在这二个类是由同一个类加载器加载的前提下才有意义,否则即使这二个类来源于同一个Class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那么这二个类就必定不相等。public Class Class...原创 2018-04-22 22:34:26 · 152 阅读 · 0 评论 -
虚拟机类加载机制解析(一)
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括加载、验证、准备、解析、初始化、使用和卸载7个阶段,其中验证、准备、解析统称为连接。7个阶段的发生顺序如图一、加载加载阶段虚拟机需要完成三件事(1)通过一个类的全限定名来获取定义此类的二进制字节流。(2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。(3)在内存中生成一个代表这个类的java.lang.Class的...原创 2018-04-21 21:16:11 · 221 阅读 · 0 评论 -
Java虚拟机之垃圾收集器
一、对象引用JDK1.2之前,Java中的引用定义很很纯粹:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。但在JDK1.2之后,Java对引用的概念进行了扩充,将其分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)四...原创 2018-05-04 22:07:19 · 153 阅读 · 0 评论 -
Java虚拟机之对象的创建及内存布局
一、对象的创建在语言层面上,对象的创建通常仅仅是一个new关键字而已,而当虚拟机接收到一个new指令时,它会做如下的操作。虚拟机接收到一条new指令时,首先会去检查这个指定的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被类加载器加载、链接和初始化过。如果没有则先执行相应的类加载过程。类加载完成后,接着会在Java堆中划分一块内存分配给对象。内存分配根据...原创 2018-05-05 17:51:46 · 315 阅读 · 0 评论 -
Java虚拟机内存划分分析
根据《Java虚拟机规范(Java SE7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示一、程序计数器 程序计数器是一块较小的内存空间,他的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分...原创 2018-04-27 20:19:06 · 216 阅读 · 0 评论