垃圾回收
来源:互联网 发布:苏州爱知科技旅游 编辑:程序博客网 时间:2024/04/29 00:46
C#是托管代码,他在运行时,会在内存中划出一块域,让其在里面运行,他不能访问外边的内存,外面的代码也不能访问它的内存。
在C#中值类型和变量都在栈中,而应用类型的是在堆中。
值类型其实是struct类型的,它的变量和值都在栈中,当程序执行完它所声明的域时,他就会被回收。所以变量是有作用域的。
而引用类型的变量是在栈中,而它的的实例是在堆中。 程序有个经常会报的错“为将对象引用设置到对象的实例”就是只在声明了变量,而没有把堆中的对象的引用地址赋给变量。
Person p;或 Person p = null; 或 Person p = lstPerson.Find(p => p.Id == 1);而 lstPerson.Find(p => p.Id == 1)没有找到相对的数据时返回的也是null。这样就会报上面的那个错误。所以用的时候,需要判断下if(p != null) .....;
当我们在堆中实例化一个类后,他会返回一个引用地址给栈中的变量。如果栈中没有变量指向这个地址,那么此对象就会被标记为垃圾数据,等待 GC (垃圾回收器)的回收。GC回收时,会调用类的析构函数。析构函数在类中只能有一个,不能有参数,所以不能有重载,也不能有修饰符。也可以手动调用GC这个类回收,但一般不会去调用。GC只会回收托管代码中的数据。
0 0
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- nginx 404页面处理以及pathInfo和隐藏index.php总述
- 模拟实现C语言库函数
- java的守护进程与非守护进程
- Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
- 3.2.2.1 更好地推断 C# 元组类型
- 垃圾回收
- 汇编语言对应的C语言
- CentOS7 修改主机名
- POJ 1274 二分图/匈牙利算法
- 在JavaScript中构建ArrayList
- Hibernate中Criteria的完整用法
- Java类包及import关键字
- Web框架:Spring简介
- JMS相关特性