Java 内存分配对齐
2022-09-03 02:18:27
我知道这在Java中是一个奇怪的问题,但是有没有办法让Java动态内存分配与一些对齐约束保持一致?例如,是否可以动态分配与页面大小对齐的对象?
我想这样做的原因是因为我将通过JNI接口从本机代码访问Java对象,并且本机代码库要求对象对齐。
谢谢。
我知道这在Java中是一个奇怪的问题,但是有没有办法让Java动态内存分配与一些对齐约束保持一致?例如,是否可以动态分配与页面大小对齐的对象?
我想这样做的原因是因为我将通过JNI接口从本机代码访问Java对象,并且本机代码库要求对象对齐。
谢谢。
不,这是不可能的。请记住,Java 中堆上的对象可以在垃圾回收期间移动。您有一些选择:
请参阅此博客文章,以更广泛地讨论Java中的直接内存对齐,这也涵盖了您的要求。总结一下:
我建议您在找到正确的地址之前不要重复分配。这对您的软件来说非常糟糕。如果您打算重复获取地址,如果您打算使用上面概述的反射方法,我建议您缓存它。或者,使用帖子中概述的方法,使用 Unsafe 获取地址字段的值。