Java内存分配对齐

标签 java memory-management memory-alignment

我知道在 Java 中这是一个奇怪的问题, 但是有没有办法让 Java 动态内存分配与某些对齐约束对齐? 例如,是否可以动态分配与页面大小对齐的对象?

我之所以要这样做是因为我要通过JNI接口(interface)从本地代码访问Java对象,而本地代码库要求对象对齐。

谢谢。

最佳答案

不,这是不可能的。请记住,Java 中堆上的对象可以在垃圾回收期间移动。您有一些选择:

  1. 停止直接从 JNI 访问 Java 对象。将您关心的内容复制到 native 代码已经对齐的 JNI 提供的缓冲区中。
  2. 使用ByteBuffer.allocateDirect() .然后找到正确对齐的缓冲区区域。一种方法是在启动时分配缓冲区,并在不同的偏移量处重复尝试对齐敏感操作,直到它起作用。这是黑客攻击!

关于Java内存分配对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268110/

相关文章:

android - 当调用 putExtra() 时内存方面会发生什么?

c - 调查 Valgrind 无效读取

c++ - reinterpret_cast 和结构对齐

c - 仅具有 char 字段的 sizeof c 结构

java - 不知道如何为这个短方法编写 Javadoc

java - Spring Boot Data JPA 问题——创建具有名称的 bean 时出错

java - 无法从所有分区获取 Kafka 滞后

java - 如何使用 Gradle 在 Spring Boot 中覆盖来自 Thymeleaf 1.5.8.RELEASE 的传递依赖 Groovy 版本

java - 内存管理递归Java

python-2.7 - 在创建带有借位= True的Theano共享变量时内存不足