Net内存管理五大基础是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1649个文字,预计阅读时间需要7分钟。
目录
1.小对象如何处理的
2.较大对象会如何
3.垃圾收集器在不同模式下的性能优化
4.引用不足在性能和内存效率间的权衡
5.对象固定可创建在托管和非托管代码间传递
目录
- 1.小对象怎么处理的?
- 2.较大的对象会怎样?
- 3.垃圾收集器可以在不同的模式下运行以优化性能
- 4.引用不足会在性能和内存效率之间折衷
- 5.对象固定可以创建在托管和非托管代码之间传递的引用
1.小对象怎么处理的?
小型.NET对象被分配到小型对象堆(SOH)上。其中有3种:第0代,第1代和第2代。对象根据其寿命向上移动。
将新对象放在Gen 0上。当Gen 0充满时,.NET垃圾收集器(GC)运行,处理不再需要的对象,并将其他所有内容移至Gen1。如果Gen 1充满,则GC再次运行,也可以将Gen 1中的对象移动到Gen 2中。
当Gen 2变满时,将发生GC完全运行。这将清除不需要的Gen 2对象,将Gen 1对象移至Gen 2,然后将Gen 0对象移至Gen 1,最后清除所有未引用的内容。每次运行GC之后,都会压缩受影响的堆,以将仍在使用的内存保持在一起。
这种代代相传的方法可确保事情高效运行-耗时的压缩过程仅在绝对必要时才会发生。
本文共计1649个文字,预计阅读时间需要7分钟。
目录
1.小对象如何处理的
2.较大对象会如何
3.垃圾收集器在不同模式下的性能优化
4.引用不足在性能和内存效率间的权衡
5.对象固定可创建在托管和非托管代码间传递
目录
- 1.小对象怎么处理的?
- 2.较大的对象会怎样?
- 3.垃圾收集器可以在不同的模式下运行以优化性能
- 4.引用不足会在性能和内存效率之间折衷
- 5.对象固定可以创建在托管和非托管代码之间传递的引用
1.小对象怎么处理的?
小型.NET对象被分配到小型对象堆(SOH)上。其中有3种:第0代,第1代和第2代。对象根据其寿命向上移动。
将新对象放在Gen 0上。当Gen 0充满时,.NET垃圾收集器(GC)运行,处理不再需要的对象,并将其他所有内容移至Gen1。如果Gen 1充满,则GC再次运行,也可以将Gen 1中的对象移动到Gen 2中。
当Gen 2变满时,将发生GC完全运行。这将清除不需要的Gen 2对象,将Gen 1对象移至Gen 2,然后将Gen 0对象移至Gen 1,最后清除所有未引用的内容。每次运行GC之后,都会压缩受影响的堆,以将仍在使用的内存保持在一起。
这种代代相传的方法可确保事情高效运行-耗时的压缩过程仅在绝对必要时才会发生。

