由于特定类型的所有零长度数组都是相同的,JVM 是否优化了零长度数组的分配以对所有此类分配使用一个共享实例?
最佳答案
没有。它可能不会这样做,因为每个创建的零长度数组对象都可以用作不同的同步监视器。 Quoth Oracle :
Synchronization is built around an internal entity known as the intrinsic lock or monitor lock... Every object has an intrinsic lock associated with it.
例如,在下面的代码中,不同的线程可以无阻塞地调用x.methodA()
和x.methodB()
。
private final int[] a;
private final int[] b;
Ctor(int n) {
a = new int[n];
b = new int[n];
}
public final methodA() {
synchronized(a) {
...
}
}
public final methodB() {
synchronized(b) {
...
}
}
关于java - 零长度数组的 JVM 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17027761/