文章目录
对象创建
①类加载检查
虚拟机遇到一条 new 指令时,首先将去检查指令参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。
②分配内存
在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。分配方式有 “指针碰撞” 和 “空闲列表” 两种,选择那种分配方式由 Java 堆是否规整(GC 收集器的算法是"标记-清除",还是"标记-整理"(也称作"标记-压缩"))决定,而 Java 堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定。
分配内存时保证线程安全
对虚拟机来说,必须保证线程安全,通常来讲&#