对象的实例化内存布局与访问定位
每种创建对象方式的实际操作如下。使用new关键字——调用无参或有参构造器创建。使用Class的newInstance()方法——调用无参构造器创建,且需要是public的构造器。使用Constructor类的newInstance()方法——调用无参或有参、不同权限修饰构造器创建,实用性更广。使用clone()方法——不调用任何参构造器,且对象需要实现Cloneable接口并实现其定义的clone()方法,且默认为浅复制。使用反序列化——从指定的文件或网络中,获取二进制流,反序列化为内存中的对象。第三方库Objenesis——利用了asm字节码技术,动态生成Constructor对象。Java是面向对象的静态强类型语言,声明并创建对象的代码很常见,根据某个类声明一个引用变量指向被创建的对象,并使用此引用变量操作该对象。在实例化对象的过程中,JVM中发生了什么变化呢?