1

我有以下代码:

public static void main(String[] args) {
    int[] a = new int[Integer.MAX_VALUE / 4];
    while (true);
}

这个数组的大小应该是 2^29,每个整数占用 4 个字节。这个数组的总大小应该至少约为 2GB。我在具有 16 Gig RAM 的笔记本电脑上运行此代码。

然后我运行 jstat 并看到以下输出。

S0C    10752.0
S1C    10752.0
S0U    0.0
S1U    5421.8
EC     65536.0
EU     27194.8
OC     175104.0
OU     16.0
MC     14080.0
MU     13695.2
CCSC   1792.0
CCSU   1617.5
YGC    1
YGCT   0.006
FGC    0
FGCT   0.000
GCT    0.006

从输出我们可以确定S1占用5421.8KB,eden占用27194.8KB。是否进行了某种优化,以便所有条目映射到内存中的相同值?

4

0 回答 0