垃圾收集器(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
  • 閱讀 ( 42 )
  • 分類:科技

你可能感興趣的文章

字串緩衝區(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的區別

...可變。因此,可以修改這些物件。StringBuffer定義了四個建構函式。StringBuffer()、StringBuffer(int size)、StringBuffer(String str)、StringBuffer(charSequence[]ch) 參考下面的程式碼, StringBuffers1=新StringBuffer(“Hello”); s1.追加(“世...

  • 發佈於 2020-10-02 19:22
  • 閲讀 ( 45 )

建造師(constructor)和解構函式(destructor)的區別

...建構函式。因此,建構函式可以過載。 什麼是毀滅者(a destructor)? 解構函式是類中的一個特殊成員函式。它用於為建構函式建立的物件取消分配記憶體。銷燬物件時呼叫解構函式。它執行不再需要的清理儲存。與建構函式一樣...

  • 發佈於 2020-10-18 11:50
  • 閲讀 ( 42 )

處置()(dispose ())和完成()(finalize ())的區別

...理。但在C等語言中,構建在.NET框架上的語言提供了垃圾收集器。它有助於管理記憶。它不能用於釋放非託管記憶體資源。dispose()方法可用於完成此任務。 dispose()方法可用於釋放資源,如資料庫連線、檔案處理程式等。此...

  • 發佈於 2020-10-18 23:21
  • 閲讀 ( 57 )

屬性(attribute)和引數(parameter)的區別

...式,Rhombus類有兩個屬性:diagonal1和diagonal2。它還具有建構函式和計算面積的方法。在主程式中,建立了一個菱形物件。將兩個值傳遞給建構函式,這些值將分配給diagonal1和diagonal2屬性。呼叫calArea方法時,計算菱形的面積,它將...

  • 發佈於 2020-10-19 02:04
  • 閲讀 ( 60 )

領域(field)和c屬性#(property in c#)的區別

...案組成。C是一種建立在.NET框架上的語言。它提供了自動垃圾收集、委託、語言整合查詢(LINQ)等,以方便、快速地編寫程式。C的一個主要優點是它支援面向物件程式設計(OOP)。它有助於使用物件構造程式或軟體。在一個系...

  • 發佈於 2020-10-19 02:36
  • 閲讀 ( 49 )

整數(integer)和浮動(float)的區別

...樣,int被轉換成整數。 y是整數型別的物件。值5傳遞給建構函式。使用intValue方法,該物件被轉換為int資料型別。轉換後的值被儲存到可以儲存int的z變數中。 圖02:自動裝箱和取消裝箱示例1 根據上面的程式,變數x有一個int,當...

  • 發佈於 2020-10-19 08:34
  • 閲讀 ( 52 )

最終決賽(final finally)和用java完成(finalize in java)的區別

...Java還有一個叫做終結的概念。Java執行時是一個自動垃圾收集器。它會自動釋放物件使用的記憶體資源。垃圾回收器在銷燬物件之前呼叫此方法。 某些物件可能包含非物件資源。一個例子是檔案描述符。在這些情況下,垃圾回收...

  • 發佈於 2020-10-19 15:24
  • 閲讀 ( 53 )

班(class)和結構(c)#(structure in c#)的區別

...類。要在C中定義類,請使用“class”關鍵字。 類包含建構函式。它是一個特殊的函式,在建立類的新物件時執行。建構函式與類同名。它沒有返回型別。預設建構函式沒有任何引數。引數化建構函式包含引數。類也可以包含解...

  • 發佈於 2020-10-19 17:15
  • 閲讀 ( 52 )

這(this)和超級java(super in java)的區別

...數。類變數由所有物件共享。id和名稱將傳遞給Employee建構函式。如果程式設計師寫id=id;它不會初始化例項變數,因為建構函式已經有id和名稱。例項變數沒有值。因此,列印它們將顯示空值。當使用它時,它引用當前物件。因...

  • 發佈於 2020-10-19 18:17
  • 閲讀 ( 59 )

蟒蛇2(python 2)和三(3)的區別

...cle、MSSQL、SQLite等多種資料庫介面。 兩者都使用自動垃圾收集器進行記憶體管理。 兩者都能夠建立圖形使用者介面(GUI)。 兩個版本都不需要宣告變數的型別。 兩者都有可用的軟體包。e、 g.—“Numpy”,“Scipy”用於科學計算...

  • 發佈於 2020-10-20 01:55
  • 閲讀 ( 51 )
yfuzal2007
yfuzal2007

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦