สารบัญ:
คำจำกัดความ - นักเก็บขยะหมายถึงอะไร
ตัวรวบรวมขยะคือชิ้นส่วนของซอฟต์แวร์ที่ทำการจัดการหน่วยความจำอัตโนมัติ หน้าที่คือการเพิ่มหน่วยความจำที่ไม่ได้ใช้ใด ๆ และตรวจสอบให้แน่ใจว่าไม่มีหน่วยความจำว่างในขณะที่ยังใช้งานอยู่ บางภาษาเช่นภาษา Java และ. NET มีการรวบรวมขยะอัตโนมัติในขณะที่ภาษาอื่นเช่น C / C ++ ต้องการโปรแกรมเมอร์เพื่อจัดการหน่วยความจำด้วยตนเอง
Techopedia อธิบายถึง Garbage Collector
John McCarthy ผู้สร้าง Lisp ได้รับการแนะนำให้รู้จักกับการจัดการหน่วยความจำด้วยตนเองเมื่อทำงานกับภาษา Lisp
เทคนิคหลักสามประการที่ใช้โดยตัวรวบรวมขยะเพื่อดำเนินการจัดการหน่วยความจำอัตโนมัติมีดังนี้:
- การนับการอ้างอิง - การอ้างอิงไปยังแต่ละวัตถุจะถูกนับโดยใช้ตัวแปรตัวนับ เมื่อตัวนับถึงศูนย์แสดงว่าวัตถุนั้นไม่ต้องการอีกต่อไปและถูกนำกลับมาใช้ใหม่
- ทำเครื่องหมายและกวาด - การสำรวจเส้นทางแบบวนซ้ำของวัตถุที่เข้าถึงได้ทั้งหมดจะดำเนินการในพื้นที่ข้อมูลทั้งหมดและวัตถุที่เข้าถึงได้จะถูกทำเครื่องหมาย วัตถุที่ไม่มีเครื่องหมายจะถูกนำกลับมาใช้ใหม่
- หยุดและคัดลอก - ฮีปหน่วยความจำแบ่งออกเป็นสองส่วน: ส่วนที่มีวัตถุและส่วนว่างเปล่าที่มีการถ่ายโอนวัตถุ (คัดลอก) หากพบว่ามีการทำเครื่องหมาย วัตถุที่ไม่ได้ทำเครื่องหมายในส่วนแรกจะถูกนำกลับมาใช้ใหม่โดยการล้างมัน
เมื่อบล็อกของหน่วยความจำที่กำหนดให้กับตัวชี้ / วัตถุได้รับการปลดปล่อยตัวชี้ / วัตถุจะต้องถูกรีเซ็ตเป็นค่า Null; มิฉะนั้นจะเป็นการห้อยอยู่นั่นคือชี้ไปยังบล็อกหน่วยความจำที่ไม่ถูกต้อง
การรวบรวมขยะช่วยลดข้อผิดพลาดและความเสี่ยงด้านความปลอดภัยที่เกิดจากตัวชี้ห้อยและปัญหาการรั่วไหลของหน่วยความจำ
ข้อเสียของการใช้ตัวรวบรวมขยะรวมถึงค่าใช้จ่ายเพิ่มเติมในทรัพยากรและประสิทธิภาพ การรันตัวรวบรวมขยะอาจทำให้ระบบช้าลงและทำให้ประสิทธิภาพลดลง
