gpt4 book ai didi

.net - 值类型会收集垃圾吗?

转载 作者:行者123 更新时间:2023-12-03 12:28:20 24 4
gpt4 key购买 nike

我知道引用类型将被垃圾收集。我想知道值类型是否也会从堆栈中被垃圾收集?

最佳答案

很不清楚你的问题是什么意思。你能仔细定义“垃圾收集”是什么意思吗?它的意思是“是 GC 算法的输入”,还是“通过压缩 GC 堆来释放”,还是什么?
存储在堆栈上的值——无论是值类型的值还是引用类型的值——都是收集算法的根。它们没有被收集,因为它们是活着的东西,几乎让其他一切都保持活力。
显然,它们并没有通过压缩 GC 堆来释放;它们通过弹出堆栈被释放。
这是否回答你的问题?
更新:

What I mean by "garbage collected" isthat, if a value type variable isfound not to be used by theapplication then it will be removedfrom the stack


好的,我认为我们正在接近一个可以回答的问题。现在我们需要了解“从堆栈中删除”的确切含义。
堆栈是 一 block 大小为 100 万字节的预分配内存 .有时我们使用该内存块的一部分来存储值类型的局部变量。 “从堆栈中删除”到底是什么意思?堆栈的大小永远不会改变;它是一百万字节的预分配内存块。
堆栈分为两个连续的区域,我们将其称为堆栈的“有效”和“无效”部分。在 x86 架构上,ESP 寄存器指向这些区域之间的边界。您是在问“在什么情况下,与堆栈上的特定值类型的局部变量相关联的内存会成为基于 x86 架构上 ESP 寄存器值变化的无效部分的一部分?”
这似乎是您问题的非常非常“实现细节”版本。堆栈是运行时特定版本的实现细节,因此如果您要询问有关它的问题,您将不得不接受这样一个事实,即您询问的是特定寄存器中的特定值特定的芯片架构。
进一步阅读:
References are not addresses
The Stack Is An Implementation Detail, Part One
The Stack Is An Implementation Detail, Part Two
“Out Of Memory” Does Not Refer to Physical Memory

I am a bit confused now to read what you have mentioned about "values" and "value types". I am finding it hard to understand the difference.


这很棘手!我们使用“值(value)”和“引用”这两个词来表示太多的东西。让我总结一下。
变量是一个存储位置。
每个变量都有一个类型。类型可以是值类型或引用类型。
存储位置包含一个值。
值类型变量的值是值类型的值。例如,int 是一个值类型。 int 类型变量的值是 int,例如 12。
引用类型变量的值是对该类型对象的引用,或者为 null。例如,字符串是引用类型。 string 类型的变量的值是对字符串的引用,或者为 null。
这就是为什么它们被称为“值类型”和“引用类型”。值类型的值是该类型的一个实例。引用类型的值是对该类型实例的引用。
现在这有意义吗?

关于.net - 值类型会收集垃圾吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342772/

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