首页 > Windows开发 > 详细

C# 内存管理

时间:2019-03-27 10:03:06      阅读:153      评论:0      收藏:0      [点我收藏+]

资源的一个用法是本地化,另一个主体是使用托管和非托管的资源--存储在托管或者本机堆中的对象。尽管垃圾收集器释放存储在托管堆中的托管对象,但不释放本地堆中的对象。必须由开发人员自己释放它们。
使用托管环境时,很容易被误导,注意不到内存管理。什么是大小对象堆,以及什么数据类型存储在堆栈上是非常有益的。
C#编程的优点是程序员不需要担心具体的内存管理。垃圾回收器会自动处理所有的内存清理工作。用户可以得到像C++语言那样的效率。虽然不必手动管理内存,但仍然需要理解后台发生的事情,理解程序在后台如何处理内存有助于提高应用程序的速度与性能。
在处理器的虚拟内存中,有一个区域称为栈,栈存储不是对象成员的值数据类型。另外在调用一个方法时,也使用栈存储传递给方法的所有参数的副本。为了理解栈的工作原理,需要注意在C#中的变量作用域。如果变量a在变量b之前进入作用域。b就会首先超出作用域。
引用数据类型
尽管栈有非常高的性能,但它还没有灵活到可以用于所有的变量。变量的生存期必须嵌套,在许多情况下,这种要求都过于苛刻。通常我们希望使用一个方法分配内存,来存储一些数据,并在方法退出后的很长一段时间内数据仍然是可用的。是钥匙new运算符来请求的存储空间,就存在这种可能,对于所有应用的数据类型。此时就要使用托管堆。
托管堆是处理器的可用内存中的另一个内存区域。
在垃圾回收器运行时,它会从堆中删除不再引用的所有对象。垃圾回收器在引用的根表中找到所有引用的对象。接着在引用的对象树中查找。在完成删除操作后,堆会立即把对象分散开来,与已释放的内存混合在一起。

C# 内存管理

原文:https://www.cnblogs.com/jaen-home/p/10605378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!