首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >值类型会被垃圾回收吗?

值类型会被垃圾回收吗?
EN

Stack Overflow用户
提问于 2010-02-26 23:44:53
回答 3查看 7.9K关注 0票数 21

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-26 23:48:47

很不清楚你的问题是什么意思。你能仔细定义一下“垃圾收集”是什么意思吗?它是否意味着“GC算法的输入”,或者“通过压缩GC堆来释放”,或者其他什么?

堆栈中存储的值--无论是值类型的值还是引用类型的值--都是收集算法的根。它们之所以不被收集,是因为它们是活着的东西,几乎让其他所有东西都活着。

显然,它们不是通过压缩GC堆来释放的;而是通过弹出堆栈来释放的。

这回答了你的问题吗?

更新:

我所说的“垃圾回收”的意思是,如果发现某个值类型变量没有被应用程序使用,那么它将从堆栈中删除

好了,我想我们离一个可以回答的问题越来越近了。现在我们需要理解你所说的“从堆栈中移除”到底是什么意思。

堆栈是一个大小为的预分配内存块,大小为一百万字节。有时,我们使用该内存块的一部分来存储值类型的局部变量。你所说的“从堆栈中移除”到底是什么意思?堆栈的大小永远不会改变;它是一个一百万字节的预分配内存块。

堆栈被分成两个连续的区域,我们称之为堆栈的“有效”和“无效”部分。在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

我现在读到你提到的“值”和“值类型”时有点困惑。我发现很难理解其中的区别。

这很棘手!我们使用"value“和"reference”这两个词来表示太多的东西。让我来总结一下。

变量是一个存储位置。

每个变量都有一个类型。类型可以是值类型,也可以是引用类型。

存储位置包含一个值。

值类型的变量的值是值类型的值。例如,int是一种值类型。int类型的变量的值是一个int,比如12。

引用类型的变量的值是对该类型对象的引用,或为null。例如,string是一个引用类型。字符串类型变量的值是对字符串的引用,或为null。

这就是为什么它们被称为“值类型”和“引用类型”。值类型的值是该类型的实例。引用类型的值是对该类型实例的引用。

现在说得通了吗?

票数 38
EN

Stack Overflow用户

发布于 2010-02-26 23:54:04

公共语言运行库(CLR)在两个位置为对象分配内存:堆栈和堆。

值类型与对堆中存储的引用类型内容的引用一起存储在堆栈中。垃圾回收器的作用是当从堆栈中弹出引用时,释放分配给堆上引用类型内容的内存。

不是引用类型内容的值类型不会存储在堆上,因此垃圾回收器不会清除它。

See here for a slightly more in depth description of value vs reference types

See here for a lot more in depth description

票数 10
EN

Stack Overflow用户

发布于 2010-02-26 23:54:55

假设你的意思是“垃圾收集”,即垃圾收集器检查它们是否活着,然后回收内存,那么答案是不,它们不是“垃圾收集”。

原因是当删除堆栈帧时,堆栈上的内存会被自动回收。

请阅读本文:http://en.wikipedia.org/wiki/Stack_%28data_structure%29#Hardware_stacks

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2342772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档