当前位置:Business-Operations

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

2025-02-21 15:52:39Business-Operations

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

c#中什么是垃圾回收?

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

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

娱乐城

非托管资源GC是不会(繁体:會)自动回直播吧收的,类如数据库连接,文件等。

亚博体育

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

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

GC对每个对象有个引用计数,所有说只要有变量在引用它,计数器就不为了,一个变量不再澳门新葡京引用这个对象,对象的计数器就【pinyin:jiù】减一,知道计数器为0时,对象就成为内存垃圾了(没有变量引用它),但是此时垃圾并没有回收。

极速赛车/北京赛车

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

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

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