关键区别–垃圾收集器与析构函数
大多数编程语言都支持面向对象编程。它是一种使用对象构建程序或软件的方法。对象是使用类创建的,因此它是类的实例。类提供对象应该由什么组成的描述。创建对象时,会为对象分配内存。分配的内存应该在程序执行结束时释放,以便将该内存重新用于其他对象。诸如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'是指为该对象分配的内存块。语言环境识别对象是否被使用。如果不进一步使用,则释放内存,以后可以使用。
运行程序时,内存块是从系统内存池中分配的。然后程序使用该内存执行任务。当程序执行结束时,垃圾回收器会判断为程序分配的内存块是否是必需的。如果不需要,这些内存块将返回到系统。因此,垃圾回收器可以跟踪程序中创建的对象。不再需要的内存块被发送回系统内存池。这个过程的主要优点是确认程序员不必专注于内存释放。它平衡了性能和内存使用。
什么是毁灭者(a destructor)?
析构函数是一个特殊的类的成员。每当对象超出范围时都会调用它。当函数结束或程序执行结束时,可以销毁对象。析构函数与类名同名。构造函数用于创建对象。它可以接受参数。构造函数也可以有返回值。但在析构函数中,没有返回类型或接受参数。一个类只能由一个析构函数组成。析构函数是使用颚化符来引用的。如果类名是Student,那么析构函数是~Student(){}。
垃圾回收器查找不再需要的对象。它确保程序不再使用的对象应该被销毁。它调用析构函数释放内存并释放资源。析构函数用于释放内存、关闭文件、释放网络资源和关闭数据库连接。在大多数编程语言中,不必编写析构函数,因为垃圾回收器会自行调用默认构造函数。如果程序员使用C++语言中的指针进行任何动态内存分配,那么他应该编写一个析构函数在对象被销毁之前释放内存。
什么是垃圾收集器与析构函数的相似性(the similarity between garbage collector and destructor)?
- 垃圾收集器和析构函数都用于释放程序不再需要的内存。
垃圾收集器(garbage collector)和析构函数(destructor)的区别
垃圾收集器与析构函数 | |
垃圾收集器是一种执行自动内存管理的软件。 | 析构函数是垃圾回收器在销毁对象期间调用的一种特殊方法。 |
类型 | |
垃圾收集器是一种软件。 | 析构函数是一种方法。 |
总结 - 垃圾收集器(garbage collector) vs. 析构函数(destructor)
垃圾收集器和析构函数是与释放内存相关的两个术语。本文讨论了垃圾收集器和析构函数之间的区别。垃圾回收器和析构函数的区别在于,垃圾回收器是执行自动内存管理的软件,而析构函数是垃圾回收器在销毁对象期间调用的特殊方法。
下载垃圾收集器vs析构函数的pdf文件
你可以下载这篇文章的PDF版本,并根据引文说明离线使用。请在这里下载PDF版本:垃圾收集器和析构函数的区别