Bib*_*rak 5 java arrays performance java-native-interface jvm
我试图理解JVM如何在内部实现原始类型的数组,如 int []
我的问题分为两部分:
1 - 它是否在内部使用ByteBuffer?我在哪里可以找到源代码,然后根据我的需要进行更改(以创建我自己的修改后的JVM).
2 - 有没有办法欺骗javac不使用内置实现,int []而是使用库中提供的实现,比如classpath -cp?这可能吗?怎么样?
我的动机是int []在JVM(使用allocateDirect())之外的内存中声明它,并从本机JNI代码访问它.这应该避免内存复制开销.
-B
int[] 是原始类型。ByteBuffer 可能基于 int[],但反之则肯定不正确。它几乎肯定是一个字对齐的连续内存块,块的每个字中存储 32 位值。有几个 JVM 是开源的,如果你真的想的话可以去看代码,但这将是高级的东西。
要做到这一点并不容易。
听起来你正试图以一种非常复杂的方式做某事。描述您正在尝试解决的实际问题可能比询问问题并尝试解决该问题更好。