c# – 垃圾收集器对值类型和引用类型的行为方式

栏目: C# · 发布时间: 5年前

内容简介:垃圾收集器在值类型和引用类型上的行为如何,它将释放内存值类型和引用类型.我有点困惑这可以任何人解释这一点,同时垃圾收集器删除免费的值的类型或参考类型哪个删除第一你正在以错误的方式思考这个问题.不要再考虑“价值类型”和“参考类型”了.相反,开始考虑变量,以及这些变量是短暂的还是长期存在的.垃圾收集堆的目的是回收与长期存在的变量关联的存储.堆栈的目的是回收与短期变量相关的存储.

垃圾收集器在值类型和引用类型上的行为如何,它将释放内存值类型和引用类型.我有点困惑这可以任何人解释这一点,同时垃圾收集器删除免费的值的类型或参考类型哪个删除第一

你正在以错误的方式思考这个问题.不要再考虑“价值类型”和“参考类型”了.相反,开始考虑变量,以及这些变量是短暂的还是长期存在的.

垃圾收集堆的目的是回收与长期存在的变量关联的存储.堆栈的目的是回收与短期变量相关的存储.

人们会试着告诉你“值类型在堆栈上”和“引用在堆上”等等,这是令人困惑的废话.变量放在堆栈或堆上(或寄存器 – 每个人都忘记了寄存器),变量可以是值类型或引用类型.

你一直在问“垃圾收集器首先要删除哪个?”这个问题无法回答.垃圾收集堆不能保证回收内存的顺序.当激活帧从堆栈弹出时,将回收短期存储 – 堆栈.但是,如果运行时可以确定将不再访问该引用,则C#语言允许垃圾收集器清除在从堆栈弹出框架之前由短期存储引用的存储.基本上,当回收存储时是运行时的实现细节,随时可能发生变化.

翻译自:https://stackoverflow.com/questions/14038544/how-garbage-collector-will-behave-on-value-type-and-reference-type


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro Git

Pro Git

Scott Chacon / Apress / 2009-8-27 / USD 34.99

Git is the version control system developed by Linus Torvalds for Linux kernel development. It took the open source world by storm since its inception in 2005, and is used by small development shops a......一起来看看 《Pro Git》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具