hotspot的内存对齐

上界对齐 #define ALIGN(x,a) (((x)+(a)-1)&~(a-1)) 

就是以a为上界对齐的意思。举个例子4k页面边界的例子,即a=4096:如果x = 3888;那么以上界对齐,执行结果就是4096。如果x = 4096;结果是4096.如果x = 4222; 则结果为8192. 

下界对齐 #define ALIGN(x,a) ((x)&~(a-1))

就是以a为下界界对齐的意思。若x = 3888; 结果为0.如果x = 4096;结果是4096.如果x = 4222; 则结果为4096.你可以把这两种方式理解为“上进”和“丢弃”。

在hotspot中的/vm/utilities/globalDefinitions.cpp文件中提供的详细算法如下:

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

以alignment为上界进行对齐。  

参考文章:

https://www.cnblogs.com/Estrong/articles/2857685.html

猜你喜欢

转载自www.cnblogs.com/mazhimazhi/p/11325028.html
今日推荐