Java虚拟机对象的创建-《深入理解Java虚拟机》读书笔记
来源:互联网 发布:struts返回json数据 编辑:程序博客网 时间:2024/05/14 22:44
Java虚拟机对象的创建(Hotspot)
在讨论之前:要先注意两点:
- 讨论虚拟机时,由于各个虚拟机实现不同,这里以Hotspot为例介绍。
- 对象不包括数组和Class对象
对象的创建都是通过new关键字来创建,虚拟机遇到new关键字时会经过如下过程:
这里说明一下上述的过程:
- 定位:主要是定位类的符号引用的位置,在定位完之后,会判断该类是否被加载过,如果没有,则需要重新加载,解析以及初始化
新生对象分配内存:在类加载完成之后,对象所需要的内存大小就可以完全确定了,此时就可以为内存对象划分内存了。划分内存的方式有两种,一种是指针碰撞,另外一种是空闲列表;具体使用哪种方式来划分内存,根据各个虚拟机的实现不一样,两种的区别如下:
- 指针碰撞:当java堆中的内存是整齐的,使用过的内存和未使用过的内存明显划分开来,当需要分配内存时,通过对象所需要的内存大小移动指针位置就可以为对象分配内存了。
- 空闲列表:当java堆中的内存不是整齐的,空闲内存与使用过的内存交叉在一起的时候,通过维护一个列表,在列表中找到足够大的内存块来进行分配,同时更新这个列表。
初始化零值:内存分配完之后,将分配的内存空间都初始化为零值
- 对象设置:主要设置这个对象是哪个类的实例,类的元信息,对象的哈希吗等。当这一步工作完成之后,从虚拟机的角度来看,一个新的对象已经完成了。
- 执行java程序的init方法:在上一步完成之后,虚拟机的工作已经完成,之后就是调用对象的构造器等来初始化这个java对象的一些基本信息。到这一步一个对象已经完成了创建过程
0 0
- Java虚拟机对象的创建-《深入理解Java虚拟机》读书笔记
- 读书笔记-《深入理解Java虚拟机》-对象探秘
- 《深入理解java虚拟机》读书笔记:Java对象的内存布局
- Java学习之【深入理解Java虚拟机---对象的创建】
- 《深入理解Java虚拟机》读书笔记
- 深入理解java虚拟机读书笔记
- 深入理解JAVA虚拟机--读书笔记
- 《深入理解Java虚拟机》读书笔记
- 深入理解Java虚拟机读书笔记
- [读书笔记]深入理解java虚拟机
- 深入理解Java虚拟机 - 读书笔记
- 深入理解JAVA虚拟机读书笔记
- [读书笔记]《深入理解java虚拟机》
- 深入理解Java虚拟机 读书笔记
- 《深入理解Java虚拟机》读书笔记
- 深入理解Java 虚拟机 读书笔记
- 《深入理解Java虚拟机》读书笔记
- 《深入理解Java虚拟机》读书笔记
- R语言 批量安装某个文件夹下的所有包
- 关于函数传参,全局变量,局部变量的一点认识
- BIM发布出来的面板及按钮处理
- Android酷炫实用的开源框架(UI框架)
- Linux快捷键--累积ing
- Java虚拟机对象的创建-《深入理解Java虚拟机》读书笔记
- tomcat7启动报错:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
- maven bundle.lastUpdated红叉解决
- POJ 3083 Children of the Candy Corn (DFS+BFS) -- 解题报告
- 冒泡排序
- UIbutton UIlabel字体大小自适应
- 一致性哈希算法
- 实习期后还有试用期吗
- 算法的特性