栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

垃圾收集之前是否清除了内存?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

垃圾收集之前是否清除了内存?

实际上,不,这不会发生。覆盖刚刚释放的内存需要花费时间,因此会有性能损失。“安全”之类的物体SecureString的都只是擦自己,而不是依靠GC。

更广泛地讲,它在很大程度上取决于该特定语言的特定实现。每种假定存在GC的语言(例如C#)都指定了有关如何以及何时进行垃圾回收的不同规则。

以您的C#为例,C#规范不要求对象在被释放后被覆盖,并且也不禁止它:

最终,在对象符合收集条件的某个时候,垃圾收集器释放了与该对象关联的内存。

§3.9C
#5.0语言规范

如果以后将内存分配给引用类型,则将有一个构造函数来执行您自己的自定义初始化。如果以后将内存分配给值类型,则将其清零,然后才能开始从中读取:

初始化为默认值通常是通过在分配内存之前让内存管理器或垃圾收集器将内存初始化为全零位来完成的。因此,使用全零位来表示空引用很方便。

§5.2C
#5.0语言规范

另外,至少有两个C#实现-微软的实现和Mono的实现,因此仅说“ C#”还不够具体。每个实现可能决定覆盖内存(或不覆盖)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号