gpt4 book ai didi

java - 为什么不使用对象集合重现 OutOfMemoryError?

转载 作者:行者123 更新时间:2023-11-30 06:45:22 26 4
gpt4 key购买 nike

我正在尝试使用以下代码重现 OutOfMemoryError:

List<Object> objects = new LinkedList<>();
while (true)
objects.add(new Object());
}

但它实际上从未发生过,我使用了 -Xmx512 并且 JVM 每次只需要大约 497 MB,然后不会消耗内存。

我用的是jdk1.8.0_151

谁能帮我弄清楚为什么没有抛出错误?

最佳答案

您没有收到 java.lang.OutOfMemoryError,因为您正在创建非常小的对象 (new Object()),并且您指定的堆大小非常大。如果您想查看 OOM,则:

  • 您使用小对象 new Object() + 小堆大小,如 Xmx64
  • 您创建了一些重对象,例如 Calendar (objects.add(Calendar.getInstance());) + Xmx512

使用new Object() + Xmx512,需要等待很长时间才能出现OOM。

关于你无法访问的代码错误,我想你已经发现你有括号问题,如果你像下面那样,那么你不会得到那个编译错误,但是如果你在 WHILE 循环之后放置任何语句,那么你会得到那个错误。

    while (true){
objects.add(Calendar.getInstance());
System.out.println(objects);
}

关于java - 为什么不使用对象集合重现 OutOfMemoryError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49095997/

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