สารบัญ:
คำจำกัดความ - การรวบรวมขยะ (GC) หมายถึงอะไร
Garbage collection (GC) เป็นแนวทางแบบไดนามิกในการจัดการหน่วยความจำอัตโนมัติและการจัดสรรฮีปที่ประมวลผลและระบุบล็อกหน่วยความจำที่ตายแล้วและจัดสรรหน่วยความจำใหม่เพื่อนำมาใช้ซ้ำ วัตถุประสงค์หลักของการรวบรวมขยะคือเพื่อลดการรั่วไหลของหน่วยความจำ
การติดตั้ง GC ต้องใช้สามวิธีหลักดังนี้:
- Mark-and-sweep - ในกระบวนการเมื่อหน่วยความจำหมด GC จะค้นหาหน่วยความจำที่เข้าถึงได้ทั้งหมดจากนั้นเรียกคืนหน่วยความจำที่มีอยู่
- จำนวนการอ้างอิง - วัตถุที่จัดสรรมีจำนวนการอ้างอิงของหมายเลขอ้างอิง เมื่อหน่วยความจำนับเป็นศูนย์วัตถุจะเป็นขยะและถูกทำลายไปแล้ว หน่วยความจำที่ว่างกลับสู่ฮีปหน่วยความจำ
- คัดลอกคอลเล็กชัน - มีสองพาร์ติชันหน่วยความจำ หากพาร์ติชั่นแรกเต็ม, GC จะหาโครงสร้างข้อมูลที่สามารถเข้าถึงได้ทั้งหมดและคัดลอกไปยังพาร์ติชั่นที่สอง, ทำการบีบอัดหน่วยความจำหลังจากกระบวนการ GC และอนุญาตหน่วยความจำว่างอย่างต่อเนื่อง
บางภาษาและแพลตฟอร์มการเขียนโปรแกรมที่มี GC ในตัว (เช่น Java, Lisp, C # และ. Net) จัดการหน่วยความจำรั่วด้วยตัวเองทำให้สามารถเขียนโปรแกรมได้อย่างมีประสิทธิภาพมากขึ้น
Techopedia อธิบายการเก็บขยะ (GC)
แนวทางแบบไดนามิกของ Garbage Collection เพื่อการจัดสรรฮีปอัตโนมัติจะจัดการข้อผิดพลาดทั่วไปและค่าใช้จ่ายสูงซึ่งมักส่งผลให้เกิดข้อบกพร่องของโปรแกรมในโลกแห่งความจริงเมื่อตรวจไม่พบ
เนื่องจากเป็นการยากที่จะระบุและซ่อมแซมข้อผิดพลาดในการจัดสรรจึงมีค่าใช้จ่ายสูง ดังนั้นการรวบรวมขยะจึงถูกพิจารณาว่าเป็นคุณสมบัติทางภาษาที่สำคัญที่ทำให้งานของโปรแกรมเมอร์ง่ายขึ้นด้วยการจัดการการจัดสรรฮีปด้วยตนเองที่ต่ำกว่า อย่างไรก็ตาม GC ไม่สมบูรณ์และควรพิจารณาข้อเสียดังต่อไปนี้:
- เมื่อเพิ่มหน่วยความจำ GC จะใช้ทรัพยากรในการคำนวณ
- กระบวนการ GC ไม่สามารถคาดการณ์ได้ทำให้เกิดความล่าช้าในการกระจายเซสชัน
- เมื่อการอ้างอิงวัตถุที่ไม่ได้ใช้จะไม่ถูกกำจัดด้วยตนเอง GC ทำให้เกิดการรั่วไหลของหน่วยความจำโลจิคัล
- GC ไม่ทราบว่าเมื่อใดควรดำเนินการภายในสภาพแวดล้อมหน่วยความจำเสมือนของคอมพิวเตอร์เดสก์ท็อปสมัยใหม่
- กระบวนการ GC โต้ตอบได้ไม่ดีกับแคชและระบบหน่วยความจำเสมือนทำให้เกิดปัญหาในการปรับแต่งประสิทธิภาพ
