当前位置: 首页 > 图灵资讯 > java面试题> JVM高频面试题-对象内存分配方式

JVM高频面试题-对象内存分配方式

来源:图灵教育
时间:2023-11-10 09:55:25

对象内存分配方式

 

虚拟机为新对象分配内存,从堆中划出一块确定大小的内存,因为对象所需内存的大小在类加载完后可以完全确定。

 

堆内存是否规整:

 

 

  • 堆内存规整:已使用的内存在一边,未使用内存在另一边。
  • 堆内存不规整:已使用内存和未使用相互交错。

堆内存是否规整是由垃圾收集器是否带有压缩整理功能决定的。

 

内存分配方式:

 

分配方式的选择 取决于 Java堆内存是否规整:

 

  • 指针碰撞方式:
    • 堆内存绝对规整。
    • 分配过程:将已使用内存和为使用内存之间放一个分界点的指针,分配内存时,指针会向未使用内存方向移动,移动一段与对象大小相等的距离。

  • 空闲列表:
    • 堆内存不规整。
    • 分配过程:虚拟机内部维护了一个记录可用内存块的列表,在分配时从列表找一块足够大的空间划分给对象实例,并更新列表上的记录。

Java堆是否规整 由所采用的垃圾收集器是否带有压缩整理功能决定