Skip to main content

การอ้างอิงที่อ่อนแอคืออะไร?

การอ้างอิงที่อ่อนแอคือการอ้างอิงถึงวัตถุในหน่วยความจำที่ไม่ได้ป้องกันไม่ให้วัตถุถูกทำความสะอาดโดยกิจวัตรการรวบรวมขยะเนื่องจากการเชื่อมโยงกับวัตถุการอ้างอิงประเภทนี้มักใช้เพื่อช่วยกำจัดการรั่วไหลของหน่วยความจำเมื่อมีเงื่อนไขพิเศษที่ป้องกันไม่ให้เกิดการรวบรวมขยะปกติอัลกอริทึมการเขียนโปรแกรมที่ใช้การอ้างอิงแบบวงกลมหรือเก็บข้อมูลภายนอกในแคชหรือผลประโยชน์โครงสร้างพิเศษโดยใช้การอ้างอิงที่อ่อนแอการใช้ประโยชน์จากการอ้างอิงที่อ่อนแอในสถานการณ์ประเภทนี้ช่วยให้การทำความสะอาดวัตถุอ้างอิงที่ไม่ได้ใช้งานและการอ้างอิงที่อ่อนแอที่เกี่ยวข้อง

ในการเขียนโปรแกรมคอมพิวเตอร์การอ้างอิงที่แข็งแกร่งมักถูกสร้างขึ้นโดยค่าเริ่มต้นเมื่อวัตถุถูกสร้างขึ้นวัตถุยังคงจัดสรรตราบเท่าที่การอ้างอิงที่แข็งแกร่งยังคงทำงานได้การอ้างอิงที่แข็งแกร่งกลายเป็นโมฆะและหน่วยความจำวัตถุที่เกี่ยวข้องจะกลายเป็นอิสระหลังจากการอ้างอิงที่แข็งแกร่งและวัตถุของมันถูกตั้งค่าสถานะเนื่องจากไม่ได้ใช้งานโดยโปรแกรมอีกต่อไปในบางสถานการณ์เช่นการเขียนโปรแกรมซ็อกเก็ตหรือแอพพลิเคชั่นการจัดการรูปภาพคลาสที่ใช้ในการสร้างวัตถุที่ทำงานไม่มีความสามารถในตัวเพื่อจัดเก็บข้อมูลเพิ่มเติมซึ่งจำเป็นโดยแอปพลิเคชันเฉพาะรายละเอียดเพิ่มเติมสำหรับวัตถุชั่วคราวเช่นการเชื่อมต่อหรือรูปภาพจะต้องเก็บไว้ในวัตถุแคชเสริมและเชื่อมโยงกับวัตถุชั่วคราวโดยการอ้างอิงเมื่อใช้การอ้างอิงที่อ่อนแอแทนการอ้างอิงที่แข็งแกร่งข้อมูลพิเศษจะไม่ถูกผูกมัดโดยการอ้างอิงและอาจถูกลบออกจากแคชโดยตัวเก็บขยะเมื่อวัตถุอ้างอิงถูกทำเครื่องหมายว่าไม่สามารถทำงานได้

คลาสอ้างอิงที่อ่อนแอเป็นปกติมีให้บริการในภาษาที่เพิ่มขึ้นโดยระบบย่อยการรวบรวมขยะรวมถึง Java, Python, Perl, C#และ. NET Frameworkอย่างไรก็ตามใน C ++ โปรแกรมเมอร์มักจะรับผิดชอบในการรับรองหน่วยความจำในการทำความสะอาดภาษานี้ได้ใช้คลาสตัวชี้อัจฉริยะซึ่งให้ฟังก์ชันเดียวกันกับการอ้างอิงที่อ่อนแอและการเก็บรวบรวมขยะช่วยลดการรั่วไหลของหน่วยความจำที่เกิดจากการทำความสะอาดตัวชี้ที่ไม่เหมาะสม

เพื่ออำนวยความสะดวกในการจัดการหน่วยความจำเพิ่มประสิทธิภาพการทำงานของภาษาโดยการให้การไล่ระดับสีที่ดีกว่าการอ้างอิงนอกเหนือจากการอ้างอิงที่แข็งแกร่งหรืออ่อนแอชนิดข้อมูลเช่นการอ้างอิงที่อ่อนนุ่มและการอ้างอิงแบบผีอาจรวมอยู่ในภาษาเหล่านี้ซึ่งช่วยให้ระดับการแจ้งเตือนของวัตถุหรือการแจ้งเตือนการจัดการที่แตกต่างกันโปรแกรมเมอร์ที่ใช้ภาษากับคอลเลกชันขยะอัตโนมัติควรทำความคุ้นเคยกับคลาสอ้างอิงทั้งหมดที่มีอยู่เพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน