我们在操作java对象的时候,首先要简单的对其进行创建,然后再考虑对象的内存分配问题。创建的时候,会遇到符号是否引用问题的讨论。同时,内存的分配主要有两种方式“指针碰撞和空闲列表。接下来,我们会对这些知识点进一步的剖析,理清java对象创建和内存的有关问题。
1、对象的创建
在创建一个对象时,首先要检查创建它的类是否能够找到常量池中的符号引用,并检查符号引用所代表的类是否已经加载、解析和初始化,如果没有,那么必须执行相应的类加载过程。
2、分配对象内存
为对象分配内存本质上就是从Java堆中划分出一块固定大小的内存给Java对象使用。对象内存分配主要有两种:
(1)指针碰撞的分配方式用于在内存整齐的堆积中进行对象分配,所有被使用的内存放在一边,没有被使用的在另一边,中间放置指针作为界点的指示器,作为对象分配内存时,将指针移动到没有被使用的同时与对象相等大小的距离即可。
(2)空闲列表适合在不规则的存储器中分配存储器,虚拟机为了知道哪个存储器区域可用,必须维持列表,在进行存储器分配时,在列表中选择足够大的空间分配给对方。
以上就是java对象创建及内存布局的介绍,相信大家经过本篇的学习,对于java对象的理解上有了更加深入的掌握,为之后的相关使用打下基础。更多Java学习指路:Java基础