垃圾收集器(garbage collector)和析构函数(destructor)的区别

大多数编程语言都支持面向对象编程。它是一种使用对象构建程序或软件的方法。对象是使用类创建的,因此它是类的实例。类提供对象应该由什么组成的描述。创建对象时,会为对象分配内存。分配的内存应该在程序执行结束时释放,以便将该内存重新用于其他对象。诸如java和C++的.NET等编程语言使用垃圾收集器进行内存管理,而C语言和C++语言则要求程序员处理内存管理。应分配必要的内存量,并在执行结束时释放内存。垃圾...

关键区别–垃圾收集器与析构函数

大多数编程语言都支持面向对象编程。它是一种使用对象构建程序或软件的方法。对象是使用类创建的,因此它是类的实例。类提供对象应该由什么组成的描述。创建对象时,会为对象分配内存。分配的内存应该在程序执行结束时释放,以便将该内存重新用于其他对象。诸如java和C++的.NET等编程语言使用垃圾收集器进行内存管理,而C语言和C++语言则要求程序员处理内存管理。应分配必要的内存量,并在执行结束时释放内存。垃圾收集器和析构函数用于释放内存。垃圾收集器和析构函数的关键区别在于,垃圾收集器是一种执行自动内存管理的软件,而析构函数是垃圾收集器在销毁对象期间调用的特殊方法。

目录

1. 概述和主要区别
2. 什么是垃圾收集器
3. 什么是毁灭者
4. 垃圾收集器和析构函数的相似性
5.并列比较-垃圾收集器与析构函数的表格形式
6. 摘要

什么是垃圾收集器(a garbage collector)?

一些编程语言具有托管代码环境。在编程语言Java和C#中,执行自动内存管理。程序员不需要释放对象使用的内存。因为内存管理是自动完成的,所以他们甚至更容易开发复杂的系统。在C、C++和Objic C等编程语言中,程序应该将对象的内存释放回系统。Java和C等语言可以找出不再使用的对象。然后,它们将分配给这些对象的内存释放回系统。

在编程语言C#和Java中,如果有一个名为Student的类,那么可以使用Student s=new Student()创建一个对象;“new”用于创建Student类的实例。它在系统中分配内存。's'是指为该对象分配的内存块。语言环境识别对象是否被使用。如果不进一步使用,则释放内存,以后可以使用。

垃圾收集器(garbage collector)和析构函数(destructor)的区别

图01:垃圾收集器和析构函数

运行程序时,内存块是从系统内存池中分配的。然后程序使用该内存执行任务。当程序执行结束时,垃圾回收器会判断为程序分配的内存块是否是必需的。如果不需要,这些内存块将返回到系统。因此,垃圾回收器可以跟踪程序中创建的对象。不再需要的内存块被发送回系统内存池。这个过程的主要优点是确认程序员不必专注于内存释放。它平衡了性能和内存使用。

什么是毁灭者(a destructor)?

析构函数是一个特殊的类的成员。每当对象超出范围时都会调用它。当函数结束或程序执行结束时,可以销毁对象。析构函数与类名同名。构造函数用于创建对象。它可以接受参数。构造函数也可以有返回值。但在析构函数中,没有返回类型或接受参数。一个类只能由一个析构函数组成。析构函数是使用颚化符来引用的。如果类名是Student,那么析构函数是~Student(){}。

垃圾回收器查找不再需要的对象。它确保程序不再使用的对象应该被销毁。它调用析构函数释放内存并释放资源。析构函数用于释放内存、关闭文件、释放网络资源和关闭数据库连接。在大多数编程语言中,不必编写析构函数,因为垃圾回收器会自行调用默认构造函数。如果程序员使用C++语言中的指针进行任何动态内存分配,那么他应该编写一个析构函数在对象被销毁之前释放内存。

什么是垃圾收集器与析构函数的相似性(the similarity between garbage collector and destructor)?

  • 垃圾收集器和析构函数都用于释放程序不再需要的内存。

垃圾收集器(garbage collector)和析构函数(destructor)的区别

垃圾收集器与析构函数
垃圾收集器是一种执行自动内存管理的软件。 析构函数是垃圾回收器在销毁对象期间调用的一种特殊方法。
类型
垃圾收集器是一种软件。 析构函数是一种方法。

总结 - 垃圾收集器(garbage collector) vs. 析构函数(destructor)

垃圾收集器和析构函数是与释放内存相关的两个术语。本文讨论了垃圾收集器和析构函数之间的区别。垃圾回收器和析构函数的区别在于,垃圾回收器是执行自动内存管理的软件,而析构函数是垃圾回收器在销毁对象期间调用的特殊方法。

下载垃圾收集器vs析构函数的pdf文件

你可以下载这篇文章的PDF版本,并根据引文说明离线使用。请在这里下载PDF版本:垃圾收集器和析构函数的区别

引用

  • 发表于 2020-10-19 13:14
  • 阅读 ( 190 )
  • 分类:IT

你可能感兴趣的文章

建造师(constructor)和析构函数(destructor)的区别

...构造函数。因此,构造函数可以重载。 什么是毁灭者(a destructor)? 析构函数是类中的一个特殊成员函数。它用于为构造函数创建的对象取消分配内存。销毁对象时调用析构函数。它执行不再需要的清理存储。与构造函数一样,...

  • 发布于 2020-10-18 11:50
  • 阅读 ( 269 )

处置()(dispose ())和完成()(finalize ())的区别

...理。但在C等语言中,构建在.NET框架上的语言提供了垃圾收集器。它有助于管理记忆。它不能用于释放非托管内存资源。dispose()方法可用于完成此任务。 dispose()方法可用于释放资源,如数据库连接、文件处理程序等。此方...

  • 发布于 2020-10-18 23:21
  • 阅读 ( 188 )

班(class)和结构(c)#(structure in c#)的区别

...没有任何参数。参数化构造函数包含参数。类也可以包含析构函数。它是一个特殊的函数,当类的对象超出范围时执行。析构函数与类名同名,以~开头。它不返回任何值,也不需要参数。 学生类包含应该存在于所创建对象中的...

  • 发布于 2020-10-19 17:15
  • 阅读 ( 223 )

垃圾(garbage)和垃圾(trash)的区别

垃圾vs垃圾 美国人是全世界最大的废物**者。在一天之内扔掉垃圾的问题上,他们被认为是排在首位的。这些从家里运走的废物通俗地说被称为“垃圾”或“垃圾”,但很少有人知道“垃圾”和“垃圾”实际上是两个不同的术...

  • 发布于 2021-06-23 23:44
  • 阅读 ( 181 )

班(class)和结构(struct)的区别

...何内存。这意味着我们可以说空结构的大小等于0字节。 垃圾收集:类可以进行垃圾收集,因为它们使用按引用传递。因此,在一个存储数据的位置进行清理更容易。另一方面,Struct不可能进行垃圾收集,因为它使用传递值,并...

  • 发布于 2021-06-25 00:32
  • 阅读 ( 215 )

建造师(constructor)和析构函数(destructor)的区别

...它们没有返回类型,甚至没有void。 什么是析构函数(a destructor)? 析构函数是一个完全不同的概念;它是一种特殊的方法,当类的实例从内存中删除时调用。当一个对象不再需要或即将消失或显式释放时,会自动调用析构函数...

  • 发布于 2021-06-25 08:36
  • 阅读 ( 261 )

处置(dispose)和定稿(finalize)的区别

...为垃圾,有效内存管理的整个过程称为垃圾收集。 垃圾收集器的主要目标是将死的对象与活的对象分开,并回收空间以供重用。基本上,整个过程都是在托管堆上进行的,托管堆只不过是一个内存块,垃圾收集器会定期检查堆...

  • 发布于 2021-06-25 14:55
  • 阅读 ( 140 )

班(class)和结构(structure)的区别

...从其他类或结构继承,而结构不能继承其他类或结构。 析构函数 另外,析构函数是类和结构之间的另一个区别。类可以有析构函数,但结构没有析构函数。 实例化 此外,类和结构之间的另一个区别是,类使用新关键字实例化...

  • 发布于 2021-07-01 04:30
  • 阅读 ( 292 )

文件读取器(filereader)和java中的bufferedreader(bufferedreader in java)的区别

...种现代编程语言。它允许面向对象编程,并提供自动垃圾收集器、支持多线程等功能。开发人员将Java用于独立、web、移动和许多其他应用程序。此外,还可以使用Java对文件执行操作。完成该任务的两个类是FileReader和BufferedReader...

  • 发布于 2021-07-01 12:28
  • 阅读 ( 260 )

垃圾(trash)和垃圾(garbage)的区别

许多人认为“垃圾”和“垃圾”是同一个词:我们扔掉的东西。虽然这两个词已经被许多人随意地互换了很多年,但实际上这两个词是不同的。事实上,你当地的固体废物管理部门甚至可能要求你把“垃圾...

  • 发布于 2021-07-03 01:20
  • 阅读 ( 195 )
yfuzal2007
yfuzal2007

0 篇文章

相关推荐