C# 的析构以及垃圾回收实例分析
作者:lqh 发布时间:2021-12-22 19:03:37
标签:C#,析构,垃圾回收
C# 的析构以及垃圾回收实例分析
看书时,自己写的例子代码,了解到几个知识点,记载下来。同时发现自己手写代码的能力比较弱,还是得多写一下。
using System;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
fun();
GC.Collect(); //4、若不显式回收,则控制台不打印回收行。
Console.WriteLine("end!");
}
public static void fun(){ //1、此处必须有static
A a=new A();
a.Dispose();
//GC.Collect(); //3、此处回收无效,因为a还没释放
}
public class A:IDisposable{
/* protected override void Finalize(){ //2、析构实际是重载Finalize,但不能直接写重载。编译器自动重写Finalize,所以代码中,只能用 析构函数。
Console.WriteLine("some one disposed!");
}*/
~A(){
Console.WriteLine("some one Finalize!");
}
public void Dispose(){
Console.WriteLine("some one disposed!");
}
}
}
}
1、该代码的输出为:
Hello World!
some one disposed!
end!
some one Finalize!
这个回收像极了异步调用!
2、IDisposable接口的Dispose方法,目的是“不用户不再使用对象时,要手工调用它”
比如文件打开,数据库访问等。需要及时释放。
明显这个概念和垃圾回收是两个概念。释放后,该对象仍然存在,有待运行环境来回收,见最后一行。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:https://my.oschina.net/u/1540190/blog/734409


猜你喜欢
- 某天突然发现idea非常重要的快捷键ctrl+shift+f无效了,网上搜了很多都说是qq快捷键冲突,但是找了下qq快捷键却没有解决,现在给
- 在java中我们常常使用加锁机制来确保线程安全,但是如果过度使用加锁,则可能导致锁顺序死锁。同样,我们使用线程池和信号量来限制对资源的使用,
- 最近在开发浏览器碰到这么一个需求:点击地址栏的时候,需要全选并调出键盘,再次点击就取消全选显示光标。点击屏幕除地址栏其他位置时,键盘隐藏,隐
- 自C#1.0版本以来,我们要定义一个不可变数据类型的基本做法就是:先声明字段为readonly,再声明只包含get访问器的属性。例子如下:1
- 首先是,在不同的AS中,gradle版本不同,下载的sdk版本不同,这些,都在gradle(Project、Models)相关代码里调过来就
- 废话不多说,直接给大家贴代码了,具体代码如下所示:package com.luo.wctweb.util; import java.awt
- 1、定时器推动整个计算机硬件的发展的核心关键性技术就是时钟。所以在企业开发中定时操作往往成为开发重点。而在JDK本身也支持这种定时调度的处理
- 0.先导的问题代码 下面的代码演示了一个计数器,两个线程同时对i进行累加的操作,各执行100
- Bmp转Jpegpublic static String bmp2Jpeg(String filePath, String outPath)
- Socket异常客户端异常java.net.ConnectException: Connection refused: connect。该异
- 简述偶然看到一篇关于阿里新orm框架的文章,好奇的点了进去。开发后端多年,看到这个还是有点兴奋的。常用mysql的orm框架mybatis、
- 看完了前面说的几本书
- Ribbon 介绍Ribbon 是 Netflix 提供的一个基于 Http 和 TCP 的客户端负载均衡工具,且已集成在 Eureka 依
- MybatisPlus代码生成器含XML所需依赖 <!--Mybatis-Plu
- 嵌套表格,即在一张表格中的特定单元格中再插入一个或者多个表格,使用嵌套表格的优点在于能够让内容的布局更加合理,同时也方便程序套用。下面的示例
- Spring流程Debug1.1 Spring测试环境搭建Spring模块概览,绿色是模块,Spring中八大模块,黑色表示该模块包含的ja
- 前言上一篇我们介绍了使用 sqflite 这个数据库工具在 Flutter 的应用中建立本地数据库的实例应用。了解过数据库的同学应该会知道,
- final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。 通常final定义的变量为常量。如:final double
- 一、Jsoup的主要功能Jsoup是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API
- 今天给大家介绍一个仿微信的图片选择器:ImageSelector。ImageSelector支持图片的单选、限数量的多选和不限数量的多选。支