Key Difference – Garbage Collector vs Destructor
ภาษาโปรแกรมส่วนใหญ่รองรับการเขียนโปรแกรมเชิงวัตถุ เป็นวิธีการสร้างโปรแกรมหรือซอฟต์แวร์โดยใช้วัตถุ วัตถุถูกสร้างขึ้นโดยใช้คลาส ดังนั้นจึงเป็นตัวอย่างของคลาส คลาสให้คำอธิบายว่าอ็อบเจกต์ควรประกอบด้วยอะไร เมื่อสร้างวัตถุ หน่วยความจำจะถูกจัดสรรสำหรับวัตถุ ควรปล่อยหน่วยความจำที่จัดสรรไว้เมื่อสิ้นสุดการทำงานของโปรแกรมเพื่อนำหน่วยความจำนั้นกลับมาใช้ใหม่สำหรับวัตถุอื่น ภาษาการเขียนโปรแกรม เช่น Java และ C. NET ใช้ตัวรวบรวมขยะสำหรับการจัดการหน่วยความจำ ในขณะที่ภาษาเช่น C และ C++ ต้องการให้โปรแกรมเมอร์จัดการการจัดการหน่วยความจำควรจัดสรรจำนวนหน่วยความจำที่จำเป็น และเมื่อสิ้นสุดการดำเนินการ ควรปล่อยหน่วยความจำ ตัวรวบรวมและทำลายขยะใช้สำหรับปล่อยหน่วยความจำ ความแตกต่างที่สำคัญระหว่างตัวรวบรวมขยะและตัวทำลายคือตัวรวบรวมขยะเป็นซอฟต์แวร์ที่ทำการจัดการหน่วยความจำอัตโนมัติในขณะที่ตัวทำลายล้างเป็นวิธีพิเศษที่เรียกโดยตัวรวบรวมขยะในระหว่างการทำลายวัตถุ
เครื่องเก็บขยะคืออะไร
ภาษาโปรแกรมบางภาษามีสภาพแวดล้อมโค้ดที่ได้รับการจัดการ ในภาษาการเขียนโปรแกรม Java และ C จะดำเนินการจัดการหน่วยความจำอัตโนมัติ โปรแกรมเมอร์ไม่จำเป็นต้องเพิ่มหน่วยความจำที่ใช้โดยวัตถุ มันง่ายกว่าสำหรับพวกเขาในการพัฒนาระบบที่ซับซ้อน เนื่องจากการจัดการหน่วยความจำจะทำโดยอัตโนมัติ ในภาษาการเขียนโปรแกรมเช่น C, C++ และ Objective C โปรแกรมควรปล่อยหน่วยความจำของวัตถุกลับสู่ระบบ ภาษาเช่น Java และ C สามารถค้นหาวัตถุที่ไม่ได้ใช้อีกต่อไปหลังจากนั้นพวกเขาจะปล่อยหน่วยความจำที่จัดสรรให้กับวัตถุเหล่านั้นกลับสู่ระบบ
ในภาษาโปรแกรม C และ Java หากมีคลาสชื่อ Student วัตถุจะถูกสร้างขึ้นโดยใช้ Student s=new Student (); 'ใหม่' ใช้เพื่อสร้างอินสแตนซ์ของชั้นเรียนของนักเรียน มันจัดสรรหน่วยความจำในระบบ 's' หมายถึงบล็อกหน่วยความจำที่จัดสรรสำหรับวัตถุนั้น สภาพแวดล้อมภาษาระบุว่ามีการใช้วัตถุหรือไม่ หากไม่ได้ใช้เพิ่มเติม หน่วยความจำจะถูกปล่อยและสามารถใช้ได้ในภายหลัง
รูปที่ 01: Garbage Collector and Destructor
เมื่อรันโปรแกรม บล็อกของหน่วยความจำจะถูกจัดสรรจากพูลหน่วยความจำของระบบ จากนั้นโปรแกรมจะทำงานโดยใช้หน่วยความจำนั้นเมื่อการทำงานของโปรแกรมสิ้นสุดลง ตัวรวบรวมขยะจะพิจารณาว่าบล็อกหน่วยความจำที่จัดสรรไว้สำหรับโปรแกรมนั้นจำเป็นหรือไม่ หากไม่ต้องการ บล็อกหน่วยความจำเหล่านั้นจะถูกส่งกลับไปยังระบบ ดังนั้นตัวรวบรวมขยะสามารถติดตามวัตถุที่สร้างขึ้นในโปรแกรม บล็อกหน่วยความจำที่ไม่ต้องการอีกต่อไปจะถูกส่งไปยังพูลหน่วยความจำของระบบ ข้อได้เปรียบหลักของกระบวนการนี้คือการยืนยันว่าโปรแกรมเมอร์ไม่จำเป็นต้องให้ความสำคัญกับการจัดสรรคืนหน่วยความจำ ปรับสมดุลประสิทธิภาพและการใช้หน่วยความจำ
ตัวทำลายคืออะไร
ตัวทำลายคือฟังก์ชันพิเศษของสมาชิกในชั้นเรียน มันถูกเรียกใช้เมื่อใดก็ตามที่วัตถุอยู่นอกขอบเขต อ็อบเจ็กต์สามารถถูกทำลายได้เมื่อฟังก์ชันสิ้นสุดหรือเมื่อสิ้นสุดการทำงานของโปรแกรม destructor มีชื่อเดียวกับชื่อคลาส คอนสตรัคเตอร์ใช้ในการสร้างวัตถุ สามารถรับพารามิเตอร์ได้ ตัวสร้างยังสามารถมีค่าส่งคืนได้ แต่ใน Destructor ไม่มีประเภทส่งคืนหรือยอมรับพารามิเตอร์คลาสสามารถประกอบด้วยตัวทำลายเดียวเท่านั้น Destructor ถูกอ้างถึงโดยใช้เครื่องหมายตัวหนอน หากชื่อคลาสเป็น Student ผู้ทำลายคือ ~Student () {}.
คนเก็บขยะจะมองหาของที่ไม่จำเป็นอีกต่อไป จะทำให้แน่ใจว่าอ็อบเจ็กต์ที่ไม่ได้ใช้โดยโปรแกรมอีกต่อไปควรถูกทำลาย มันเรียก destructor เพื่อปล่อยหน่วยความจำและจัดสรรทรัพยากรใหม่ ตัวทำลายมีประโยชน์ในการปล่อยหน่วยความจำ ปิดไฟล์ ปล่อยทรัพยากรเครือข่าย และปิดการเชื่อมต่อฐานข้อมูล ในภาษาโปรแกรมส่วนใหญ่ ไม่จำเป็นต้องเขียน destructor เนื่องจากตัวรวบรวมขยะเรียกตัวสร้างดีฟอลต์ด้วยตัวเอง หากโปรแกรมเมอร์ได้ทำการจัดสรรหน่วยความจำแบบไดนามิกโดยใช้พอยน์เตอร์ในภาษาเช่น C++ เขาควรเขียนตัวทำลายล้างเพื่อปล่อยหน่วยความจำก่อนที่วัตถุจะถูกทำลาย
ความคล้ายคลึงกันระหว่างผู้เก็บขยะและผู้ทำลายล้างคืออะไร
ทั้ง Garbage Collector และ Destructor ถูกใช้เพื่อปล่อยหน่วยความจำซึ่งไม่จำเป็นสำหรับโปรแกรมอีกต่อไป
คนเก็บขยะกับผู้ทำลายต่างกันอย่างไร
เก็บขยะ vs ผู้ทำลาย |
|
ตัวรวบรวมขยะคือซอฟต์แวร์ที่จัดการหน่วยความจำอัตโนมัติ | ตัวทำลายเป็นวิธีพิเศษที่เรียกโดยตัวรวบรวมขยะระหว่างการทำลายวัตถุ |
ประเภท | |
โปรแกรมเก็บขยะคือซอฟต์แวร์ | ตัวทำลายคือวิธีการ |
สรุป – คนเก็บขยะ vs ผู้ทำลาย
ตัวเก็บขยะและตัวทำลายเป็นคำศัพท์สองคำที่เกี่ยวข้องกับการปล่อยหน่วยความจำ บทความนี้กล่าวถึงความแตกต่างระหว่าง Garbage Collector และ destructor ความแตกต่างระหว่างตัวรวบรวมขยะและตัวทำลายคือตัวรวบรวมขยะเป็นซอฟต์แวร์ที่ทำการจัดการหน่วยความจำอัตโนมัติในขณะที่ตัวทำลายล้างเป็นวิธีพิเศษที่เรียกโดยตัวรวบรวมขยะในระหว่างการทำลายวัตถุ
ดาวน์โหลดไฟล์ PDF ของ Garbage Collector vs Destructor
คุณสามารถดาวน์โหลดไฟล์ PDF ของบทความนี้และใช้เพื่อวัตถุประสงค์ออฟไลน์ตามหมายเหตุอ้างอิง โปรดดาวน์โหลดไฟล์ PDF ที่นี่: ความแตกต่างระหว่าง Garbage Collector และ Destructor