当前位置:Open-SourceComputers

c中的《拼音:de》垃圾回收

2025-02-21 15:45:31Open-SourceComputers

c#中什么是垃圾回收?C#里面的GC(垃圾回收)不是以这个变量的使用时间来回收内存的。而且GC回收的都是可托管代码。一般你定义一个引用变量,它肯定会在堆上面占用一块空间,栈上有个地址指向这个存储位置,只用当GC发现堆上这个资源(数据)在栈上没有地址指向它的时候才把这块内存回收

c#中什么是垃圾回收?

C#里面的GC(垃圾回收)不是以这个变量的使用时间来回收内存的。而且GC回收的都是可托管代码。

澳门永利

一般你定义一个引用《练:yòng》变量,它肯定会在堆上面占用一块空间,栈上有个地址指向这个存澳门新葡京储位置,只用当GC发现堆上这个资源(数据)在栈上没有地址指向它的时候才把这块内存回收。

非托管资(繁:資澳门威尼斯人)源GC是不会自动回收的,类如数据库连接,文件等。

C#中垃圾回收机制原理是什么?

首先说下C#中的变量类型吧,C#中有2个变量类型,一种是值类型,一种是引用类型,值类型是在栈上创建,这一类型用不到GC,引用类型是在堆中创建,GC主要是在这里管理对象。

GC对《繁体:對》每个对象有个引用计数,所有说只要有变量在引用它,计数器就不为了,一个变量不再引用这个对象澳门伦敦人,对象的计数器就减一,知道计数器为0时,对象就成为内存垃圾了(没有变量引用它),但是此时垃圾并没有回收。

那什澳门新葡京么时候回收呢,是在内存占用超过一定限度是,GC才启动,释放垃圾资源,说白了就是delete这些对象,将空间归[繁:歸]还给系统。

极速赛车/北京赛车

但是这还没完,空间释放后,内存空间就不连续了,所有GC还要赶一件事,就是将空间整理下,将占用的空间连续话,具体说就是将空间向上推,就是想高地值转存,这样空间就连续了,使用也方便了,然后GC就改变应用那些对象的变量里地地址,让他们指向正确的位置,所以说C#中的引用类型就是一种指针,一种动态改变值的指针。

本文链接:http://21taiyang.com/Open-SourceComputers/22078085.html
c中的《拼音:de》垃圾回收转载请注明出处来源