HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。
虚拟机遇到一条 new 指令时,首先检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。
把一块确定大小的内存从 Java 堆中划分出来,为新生对象分配内存。
内存分配的两种方式:
指针碰撞 :用过的内存全部整合到一边,没有用过的内存放在另一边
空闲列表 :虚拟机会维护一个列表,该列表中会记录哪些内存块是可用的
1、句柄:
2、直接指针:
参考:
https://juejin.cn/post/6875638406165037063
https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247484884&idx=1&sn=0d9b841ce0fc300c78ade2a87ffbfb46&source=41#wechat_redirect