gpt4 book ai didi

language-agnostic - 为什么垃圾收集器会卡住执行?

转载 作者:行者123 更新时间:2023-12-03 23:02:01 25 4
gpt4 key购买 nike

我在回家的路上想着垃圾收集,我开始想,为什么垃圾收集器会完全卡住程序的执行?就我个人而言,我会设计它来阻止任何尝试分配新对象的线程,但是正在运行的线程将被保留下来。
我无法想象与垃圾收集器目前的工作方式相比,这会成为问题的任何情况。

最佳答案

现代垃圾收集器(无论如何在 .NET 和 Java 中)实际上并没有“阻止世界”——它们会做各种聪明的事情来同时收集。

但是,您可能需要考虑这样的情况:

 object x = null;
object y = new object();
...
x = y;
y = null;

现在,假设 GC 查看 x ,然后是 ... 下面的行运行,然后 GC 查看 y - 它不会看到任何事件的对象......但该对象应该仍然是事件的。

基本上需要有一定程度的暂停才能获得一致的引用集。然后是压缩、引用重新分配等。但是,就要求在整个 GC 周期内停止所有内容而言,它并没有以前那么糟糕。然而,想想确实很痛苦:)

关于language-agnostic - 为什么垃圾收集器会卡住执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821300/

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