最近我一直在阅读Java中不同代的对象分配.大多数时候,新对象在Eden(Young Generation的一部分)中分配,然后如果满足以下任何条件,它们将被提升为Old Generation.
(1)物体的年龄达到了终点阈值
(2)当从伊甸园(或)另一个幸存者空间(从)复制物体时,幸存者空间(到)已满
但也有一个特殊情况,即在旧世代中直接分配对象,而不是从年轻一代中提升.当我们尝试创建的对象很大(可能是几MB的数量级)时会发生这种情况.
有没有办法知道巨大/巨大物体的大小/限制?我知道G1垃圾收集器的巨大对象标准.我只想知道Java 6之前或之中的大小限制.
谢谢你的时间 :)
为什么不可能创建一个max int size的数组?
int i = 2147483647;
int[] array = new int[i];
Run Code Online (Sandbox Code Playgroud)
我找到了这个解释:
通过32位整数访问Java数组,最大理论数组大小为2147483647个元素.
但是你可以看到我的代码不起作用.创建一个大小的数组也是不可能的
new int[Integer.MAX_VALUE - 5];
Run Code Online (Sandbox Code Playgroud)
PS
为什么-5呢?