快速了解VB.NET垃圾收集器
创始人
2024-06-10 07:40:51
0

VB.NET还是比较常用的,于是我研究了一下VB.NET垃圾收集器,在这里拿出来和大家分享一下,希望对大家有用。每当创建类的实例时,如果该对象中存在名为 New 的过程,则公共语言运行库 (CLR) 尝试执行它。New 是一种称为“构造函数”的过程,该构造函数用于在对象中的任何其他代码执行之前初始化新对象。New 构造函数可用于打开文件、连接到数据库、初始化变量以及处理任何需要在可使用对象前完成的其他任务。

当创建派生类的实例时,基类的 Sub New 构造函数首先执行,然后执行派生类中的构造函数。这是因为 Sub New 构造函数中的第一行代码使用语法 MyBase.New() 调用类层次结构中该类本身紧上面的类的构造函数。然后调用该类层次结构中每个类的 Sub New 构造函数,直到到达基类的构造函数。此时,基类构造函数中的代码执行,接着执行所有派生类中每个构造函数的代码,最后执行最相近派生的类中的代码。

当不再需要某对象时,CLR 调用该对象的 Finalize 方法,然后释放其内存。Finalize 方法称为“析构函数”,因为它执行清理任务,如保存状态信息、关闭文件和与数据库的连接,以及执行在释放对象前必须完成的其他任务。

当调用派生类的 Sub Finalize 方法时,首先执行所需的任何清理任务,然后使用语法 MyBase.Finalize() 显式调用其基类的 Sub Finalize 方法。因此,Sub Finalize 方法首先从最相近派生的类开始运行,最后执行基类中的代码。

一旦涉及到finalize方法,垃圾收集器就不能不提到,在.net环境中,由垃圾收集器来管理内存,在VB.NET垃圾收集器告诉你的程序不在需要使用某个对象的方法是把对象设置为nothing,如下:

  1. employee=nothing 

在VB.NET垃圾收集器释放某个对象之前,首先调用该对象的finalize方法,根据处理的不同,有时从程序中止使用某个对象到某个对象的finalize方法运行之间时间很长,在这种情况下可以在类里放一个dispose的专门方法,用这个方法执行对废弃对象的处理,当某个对象的内容不需要使用时,调用 dispose方法,程序立即执行对象的清理处理,仔细观察vs生成的窗口代码,也会发现dispose方法的代码,如下:

  1. Public Sub New()  
  2. MyBase.New()  
  3.  
  4. '该调用是 Windows 窗体设计器所必需的。  
  5. InitializeComponent()  
  6.  
  7. '在 InitializeComponent() 调用之后添加任何初始化  
  8.  
  9. End Sub  
  10.  
  11. '窗体重写 dispose 以清理组件列表。  
  12. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)  
  13. If disposing Then  
  14. If Not (components Is Nothing) Then  
  15. components.Dispose()  
  16. End If  
  17. End If  
  18. MyBase.Dispose(disposing)  
  19. End Sub 

我们只需要把dispose进行调用就可以了:someclass.dispose

【编辑推荐】

  1. 对VB.NET OBEX协议的简单概括
  2. 宝典之初步了解VB.NET Web app
  3. 深入概括VB.NET实现IEnumerator接口
  4. 三分钟掌握VB.NET操作MySql数据库
  5. 三步了解VB.NET串口通讯如何发送接收数据

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...