Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 垃圾收集和储存_C#_.net_Garbage Collection - Fatal编程技术网

C# 垃圾收集和储存

C# 垃圾收集和储存,c#,.net,garbage-collection,C#,.net,Garbage Collection,正如我们所知,垃圾收集器相信分代收集的理念。其中,短寿命/小对象被放置在gen 0上,我相信这是二级处理器或核心缓存(如果我在这里出错,请纠正我),以便更快地访问。记住这一点,gen 1和gen 2放在哪里?GC生成和缓存/内存级别之间没有直接关系 内存管理器只是从一块内存开始,并从中分配内存。代码使用它 处理器跟踪内存使用情况,因此最近使用的内容通常存储在处理器可以最快访问的位置。根据使用模式,最近使用的数据几乎可以来自任何一代 最近创建的对象经常使用,而较旧的对象使用频率较低。这往往会导致最

正如我们所知,垃圾收集器相信分代收集的理念。其中,短寿命/小对象被放置在gen 0上,我相信这是二级处理器或核心缓存(如果我在这里出错,请纠正我),以便更快地访问。记住这一点,gen 1和gen 2放在哪里?

GC生成和缓存/内存级别之间没有直接关系

内存管理器只是从一块内存开始,并从中分配内存。代码使用它

处理器跟踪内存使用情况,因此最近使用的内容通常存储在处理器可以最快访问的位置。根据使用模式,最近使用的数据几乎可以来自任何一代

最近创建的对象经常使用,而较旧的对象使用频率较低。这往往会导致最近创建的对象位于一级缓存中,二级缓存中的对象稍旧,主内存中的对象更旧。这只是一种普遍趋势,而不是内存管理器强制执行的任何操作。在任何给定的时间,每个级别的缓存都很可能包含来自两到三个不同代的一些对象


还要注意,当数据加载到缓存中时,只有被访问的部分才会加载到缓存中。因此,如果您有一个大型对象,最近访问过的部分可能在一级缓存中,最近在二级缓存中访问过的其他部分可能在二级缓存中,其余部分仅在主内存中。

根据您的简要介绍,如果访问频繁,大型对象(大小大于一级或二级大小)存储在哪里。我们可以假定,它一直生活在主内存中吗?