首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >垃圾收集和储存

垃圾收集和储存
EN

Stack Overflow用户
提问于 2013-08-04 23:02:32
回答 1查看 83关注 0票数 0

正如我们所知,垃圾收集器相信代际收集的哲学。其中短暂的/小的对象被放置在第0代,我相信L2处理器或核心缓存(如果我错了的话纠正我)更快的访问。考虑到这一点,第1代和第2代在哪里放置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-04 23:10:08

GC代与缓存/内存级别之间没有直接关系。

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

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

有一种趋势是,最近创建的对象被频繁使用,而较旧的对象被使用得稍微少一些。这往往导致最近创建的对象在L1缓存中,在L2中稍微老一些,在主内存中仍然老一些。这只是一种普遍趋势,而不是由内存管理器强制执行的任何东西。在任何给定的时间,每个缓存级别都很可能包含来自两代或三代的一些对象。

还请注意,当数据被加载到缓存中时,只有被访问的部分被加载到缓存中。因此,如果您有一个大型对象,最近访问的部分对象可能在L1缓存中,另一些部分最近在L2缓存中访问较少,其余部分仅在主内存中访问。

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

https://stackoverflow.com/questions/18048474

复制
相关文章

相似问题

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