代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

垃圾收集是仅用于回收堆对象还是同时回收堆和堆栈中的对象?

  •  0
  • Tim unnamed eng  · 技术社区  · 7 年前

    我正在阅读Scott的《编程语言语用学》,并想知道以下问题:

    垃圾收集(例如,通过引用计数)是否仅用于回收堆对象或堆和堆栈中的对象?

    例如,在Python中,Java和C#使用垃圾收集,

    4 回复  |  直到 7 年前
        1
  •  2
  •   svick Raja Nadar    7 年前

    垃圾收集(例如,通过引用计数)是否仅用于回收堆对象或堆和堆栈中的对象?

    它只用于堆对象。堆栈完全用于保证较短生命周期的对象(即,它们不会超过创建它们的函数)。对于这些对象,垃圾收集是不必要的。

    async

        2
  •  1
  •   Danil Eroshenko    7 年前

    堆栈中根本并没有任何“解除分配”。所以,是的,垃圾收集器不参与这个过程。一旦你们不需要它,你们放入堆栈的所有东西都会被程序忘记。应用程序通常只是从堆栈指针中减去对象的大小(以字节为单位),这相当于清理上次放置的所有内容。

        3
  •  1
  •   pndey    7 年前

    java中的垃圾收集器只声明堆中的对象,但它会跟踪堆栈内存,以查看在声明堆对象之前是否仍在引用任何堆对象。一旦方法调用结束,堆栈内存即被声明。

        4
  •  -1
  •   javadev    7 年前