简单来说,我的工作是:
public void method(List<Integer> elems) {
final int MAX_ELEM_COUNT = 32;
ByteBuffer bb == ByteBuffer.allocate(MAX_ELEM_COUNT * Integer.BYTES);
for (Integer elem : elems) {
bb.putInt(elem);
}
bb.flip();
ByteBuffer dest = getPermanentBufferForSize(bb.remaining());
dest.put(bb);
}
临时缓冲区非常小(128字节),并且没有逃逸,因此看起来很适合堆栈分配。(ByteBuffer对象本身和它引用的字节数组)。
JVM(特别是OpenJDK)是否会对数组执行此操作?
如果他们这样做了,触发此类逃逸分析的要求是什么?(我正在寻找JVM的实现细节,例如:它必须小于4 kb,在编译时必须知道分配大小,它的引用不能被分配给堆对象等)。感谢任何资源。