java - 零长度数组的 JVM 优化

标签 java arrays

由于特定类型的所有零长度数组都是相同的,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/

相关文章:

C编程: Loop function which assigns to array

arrays - 在 F# 中使用浮点步骤创建数组的速记

java - Spring 集成: Getting Exception on refreshing application context 2nd time

java - android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java :252) nullpointerexception

java - Websphere 8.0 和 Java 1.7

java - 按一定顺序排列 boolean 标志以获得更好的性能是否有意义

python - 在不创建昂贵副本的情况下引用 numpy 数组

java - Findbugs 显示 "BIT_ADD_OF_SIGNED_BYTE"错误

c++ - 没有边界的预定义二维数组?

arrays - 使用 Parse 在 PFQuery 之外返回空数组的数组