openjdk中部分代码解惑

219 阅读1分钟

普通字节数转化为堆单位(heapWordSize)

inline size_t heap_word_size(size_t byte_size) {
  return (byte_size + (HeapWordSize-1)) >> LogHeapWordSize;
}

将特定的字节数转化为堆分配的最小单位heap_word_size

举例:64位机器下,如果byte_size=3,heap_word_size=8,那么将分配一个heap_word_size的尺寸

内存对齐

#define align_size_up_(size, alignment) (((size) + ((alignment) - 1)) & ~((alignment) - 1))

上述代码将内存向上对齐
size按照alignment向上对齐,举例:size=3, alignment=4, 则对齐结果是4,如果size=4,alignment=4,则对齐结果是4,如果size=5,alignment=4,则对齐结果为8

#define align_size_down_(size, alignment) ((size) & ~((alignment) - 1))

上述代码将内存向下对齐