gpt4 book ai didi

c# - C# 和 Java 中的垃圾回收

转载 作者:行者123 更新时间:2023-11-29 05:28:17 24 4
gpt4 key购买 nike

我知道垃圾收集器会在找不到任何指向对象的指针时收集分配的内存。我想知道如果我在循环中创建和初始化一些本地对象,这些对象是否由 Java 垃圾收集器收集? C# 呢?

如果我在局部函数中创建和初始化一些对象,它们会发生什么?他们会在本地函数运行结束时收集吗?

我想知道,局部对象是否与局部变量完全一样?

谢谢。

最佳答案

通常在函数中,内存分配在堆栈中用于非对象变量,当函数完成执行时,堆栈被清除并释放内存。

对于对象,内存分配在中(你会记得C<中的malloc()free()/强>)。但是在 JavaC# 中,free() 函数是垃圾收集器为您做的,而不是您担心它。

因此,即使在函数中,对象也是局部变量,但不是存储在中,而是存储在中。所以它们与 int i 不同。但是当功能完成时,那些对象超出了范围。因此,您将无法再访问它们,但在 garbage collector 运行并清除它们之前,它们的内存不会被释放。

但是垃圾收集器 如何运行,何时运行完全基于不同的算法。即使对于 Java 的不同实现,它们也可能不相同(例如,sun java 可能具有与另一个 Java 实现不同的算法)

关于c# - C# 和 Java 中的垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965087/

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