• 主页
  • 转义分析是否有助于JVM在堆栈上分配数组?

转义分析是否有助于JVM在堆栈上分配数组?

简而言之,这就是我要做的:

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