为了账号安全,请及时绑定邮箱和手机立即绑定

简单分配期间的垃圾收集

简单分配期间的垃圾收集

C#
蛊毒传说 2021-09-19 15:37:30
所以我在我的一些代码中追踪我认为过度的 GC。我最终将其归结为这段代码,显示了我所看到的内容:object[] ret = new object[40000000];for (int i = 0; i < 40000000; i++){    ret[i] = new object();}在运行该循环时,我看到了数十个 Garbage Collection Gen1 事件。有没有人很好地理解这是为什么?在填充这个数组时,它清理了哪些不再被引用的对象?这是更多参考图片:https : //imgur.com/a/z3PBtou在我丢失对我创建的对象的引用之前,我不希望发生任何 GC。也许我今天脑子进水了,或者我遗漏了一些基本概念,但这对我来说似乎很好奇。谢谢!
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

仅仅因为它运行了 gen1 并不意味着它收集了任何东西——这意味着它尝试了(正是因为你分配了很多对象!)。它不知道,直到它尝试,它是否会成功。

在我丢失对我创建的对象的引用之前,我不希望发生任何 GC。

不; GC收集无法访问的对象,但它会在合适的时候运行(例如,基于分配 - 或由于来自操作系统的外部内存压力)。


查看完整回答
反对 回复 2021-09-19
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信