金三银四精选java面试题-什么是指针碰撞和空闲列表?

发布时间:2023-12-01 09:25:28
 

什么是指针碰撞和空闲列表?

指针碰撞(Pointer Bumping)和空闲列表(Free List)分别是内存分配策略和内存管理策略,常用于描述动态内存分配的过程

  1. 指针碰撞(Pointer Bumping):指针碰撞是一种内存分配策略,通常用于实现固定大小的对象的分配
    1. 指针碰撞中,内存被看作是一个连续的块,分配器使用一个指针来表示当前可用的内存位置,
    2. 当有新的对象需要分配时,分配器会将指针向前移动对应的字节大小,在移动指针的同时,也会更新可用内存的位置信息。
    3. 这种策略要求内存空间连续的,并且必须按照相同的大小进行分配,因此主要适用于静态或固定大小的内存分配场景。
  1. 空闲列表(Free List):空闲列表是一种内存管理策略,通常用于实现可变大小的对象的分配
    1. 空闲列表中,内存被划分为多个块,每个块都有一个头部信息来记录其状态(分配或空闲)和大小。
    2. 当有新的对象需要分配时,分配器会遍历空闲列表,寻找能够容纳该对象大小的空闲块,并进行分配。
    3. 分配后,该块会从空闲列表中移除或进行相应的更新。
    4. 当对象被释放时,分配器将其对应的内存块标记为空闲,并将其添加到空闲列表中,以便后续的分配操作使用。
    5. 这种策略可以更灵活地处理可变大小的内存分配需求。

 
上一篇 金三银四精选java面试题-对象创建的过程了解吗?
下一篇 金三银四精选java面试题-JVM创建对象时,堆会发生抢占吗?

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题