1.1、对象的实例化
2021-10-20 23:45:53 31 举报
AI智能生成
对象的实例化
作者其他创作
大纲/内容
创建对象的方式
new
最常见的方式
变形1:Xxx的静态方法
变形2:XxxBuilder/XxxFactory的静态方法
Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是public
Constructor的newInstance(Xxx):反射的方式,可以调用空参、带参的构造器,权限没有要求
使用clone():不调用任何构造器,当前类需要实现Cloneable接口,实现clone()
使用反序列化:从文件中、网络中获取一个对象的二进制流
第三方库Objenesis
创建对象的步骤
1.判断对象对应的类是否加载、链接、初始化
2.为对象分配内存
如果内存规整
指针碰撞
如果内存不规整
虚拟机需要维护一个列表
空间列表分配
说明
3.处理并发安全问题
采用CAS失败重试、区域加锁保证更新操作的原子性
每个线程预先分配一块TLAB——通过-XX:+/-UseTLAB参数来设定
4.初始化分配到的空间——所有属性设置默认值,保证对象实例字段在不赋值时可以直接使用
5.设置对象的对象头
6.执行init方法进行初始化
0 条评论
下一页