Java对象在Java虚拟机的创建过程
来源:互联网 发布:python tcp 保持连接 编辑:程序博客网 时间:2024/06/02 23:35
创建
1、相应类加载检查过程
Java程序中的“new”操作会转换为Class文件中方法的“new”字节码指令。
JVM(本文特指HotSpot)遇到new指令时,先检查指令参数是否能在常量池中定位到一个类的符号引用:
A)、如果能定位到,检查这个符号引用代表的类是否已被加载、解析和初始化过;
B)、如果不能定位到,或没有检查到,就先执行相应的类加载过程;
2.分配内存
分配内存有两种方法。内存大小在类加载时候已被确定。
a)指针碰撞:内存分配事规整的,在内存中,一边是分配过的,一边是没有分配过的,中间是区分它们的指针,只需要这个指针向空闲空间那边移动一段和对象大小相等的距离即可
b)空闲列表:内存分配是不规整的,空闲片段和已分配片段交织一起,这是后,虚拟机需要维护一张空闲列表,每次对内存的操作就是对表的修改操作。
3.线程安全问题
对象分配内存在虚拟机是很常见的操作,所以在并发的情况下有可能出现 “线程A给某个对象分配内存移动指针,还没来的及移动指针,线程B就使用了该指针” 的问题。处理方法也是有两种。
a)同步处理:CAS加失败重试的方式,这样会影响到性能。
b)直接为每个线程分配一段固定大小的缓存。
4.初始化
分配完内存之后,虚拟机会把分配到的内存空间都会初始化为零值,保证了实例字段不被初始化就能使用,只是实例字段都是零值。
5.执行对象实例方法
对象执行了方法,按照程序员的想法初始化之后,一个真正可用的对象就产生了。
通常,经过上面5步对象才完全new出来。
阅读全文
1 0
- Java对象在Java虚拟机的创建过程
- Java对象在虚拟机中的创建过程
- 在java虚拟机中对象的创建过程
- JAVA虚拟机:对象的创建过程
- Java对象在Java虚拟机中的创建过程
- 深入理解Java虚拟机之对象的创建过程
- java虚拟机(二,虚拟机中对象创建过程)
- Java虚拟机-对象的创建,对象头
- Java对象的创建过程
- java对象的创建过程
- java对象的创建过程
- java对象的创建过程
- java对象的创建过程
- java对象的创建过程
- Java对象的创建过程
- Java对象的创建过程
- Java对象的创建过程
- Java对象的创建过程
- JAVA中字符串比较equals()和equalsIgnoreCase()的区别
- (Android)解决react-native打包好后启动白屏的问题(react-native-splash-screen)
- SLAM 的初步学习(一)--ubuntu14.04 下安装 opencv3.2
- oracle多表联合查询加gruop by处理
- teamviewer连接无桌面linux
- Java对象在Java虚拟机的创建过程
- Redis介绍以及安装(Linux)
- Docker的web端管理平台对比(DockerUI 、Shipyard、Portainer、Daocloud)
- 晶体管电路设计 上 铃木雅臣 学习体会
- 几个常见的程序错误
- Exceptional C++读书笔记:编译器防火墙与Pimpl惯用法(一)
- Linux查看mysql 安装路径和运行路径
- TortoiseSVN Show Log 出错:svn/***/!svn/*** path not found
- XZ_Swift之Swift基础第二篇