简而言之,这就是我要做的:
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的实现细节,比如:它必须小于4kb,在编译时必须知道分配大小,它的引用不能分配给堆对象等。)任何资源都很受欢迎。
转载请注明出处:http://www.jubohx.com/article/20230517/2059384.html