静态属性最终会出现在第二代中吗?

发布于 2024-11-05 07:15:16 字数 195 浏览 2 评论 0原文

当我有一个静态字段/属性在应用程序池的生命周期中一直存在于我的应用程序池中时,它位于内存中的哪里?我假设它升级到了 gen2 并在那里度过了余生? (假设它足够小,不会进入 LOH

When I have a static field/property which lives in my application pool for the life of the application pool, where does it live in memory? I'm assuming its promoted into gen2 and lives out its days there? (assuming its small enough not to go into the LOH)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

提笔落墨 2024-11-12 07:15:16

静态属性位于分配给类型/类的类型对象的内存空间中的堆中。它们在加载类型的同时加载。

静态属性不能被垃圾收集。类型对象永远无法被卸载。

本书第 4 章末尾 CLR via C# 对此进行了解释。这是一个小片段图:在此处输入图像描述

这只是该图的一部分(无法完全复制,因为版权)并显示 Employee 类型对象及其静态字段。类型对象与所有其他对象类似,并且有一个指向其类型的指针,该类型恰好是System.Type

Static properties live in the heap in the memory space allocated to the type object for the type/class. They are loaded at the same time the type is loaded.

Static properties cannot be garbage collected. Type object can never be unloaded.

End of the chapter 4 of the book CLR via C# explains it. Here is a small snippet diagram:enter image description here

This is just a portion of the diagram (cannot copy fully because of the copyright) and shows Employee type object with its static fields. Type object is similar to all other objects and has a pointer to its type which happens to be System.Type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文