gpt4 book ai didi

java - 为什么无限对象创建不会抛出 OutOfMemoryError?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:44:51 24 4
gpt4 key购买 nike

为什么我用下面的代码没有得到 OutOfMemoryError?

class OutOfMemoryErrorTest{

public static void main(String[] args){
Object obj;

while(true){
obj = new Object();
}
}
}

我正在运行 Java 8。

最佳答案

obj在每次循环后都会被标记为collectable,所以会被collected。

    while(true){
Object obj = new Object(); //no further reference, so obj will be collected
}

如果需要测试OOM,应该将obj的引用保存到LinkedList中。

    List refs = new LinkedList();
while (true) {
Object obj = new Object();
refs.add(obj);
}

然后你就会得到你想要的OOM。而且您可以使用较小的堆来更快地达到 OOM。

关于java - 为什么无限对象创建不会抛出 OutOfMemoryError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56106568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com