กลับไปหน้าบทความ

อ่าน 1 นาที

หน่วยความจำที่เข้าถึงไม่ได้

ใน การเขียน โปรแกรมคอมพิวเตอร์หน่วยความจำที่เข้าถึงไม่ได้ (unreachable memory)คือบล็อกของหน่วยความจำที่จัดสรรแบบไดนามิกซึ่งโปรแกรมที่จัดสรรหน่วยความจำนั้นไม่มีตัวชี้ ใดๆ...

หน่วยความจำที่เข้าถึงไม่ได้

ใน การเขียน โปรแกรมคอมพิวเตอร์หน่วยความจำที่เข้าถึงไม่ได้ (unreachable memory)คือบล็อกของหน่วยความจำที่จัดสรรแบบไดนามิกซึ่งโปรแกรมที่จัดสรรหน่วยความจำนั้นไม่มีตัวชี้ ใดๆ ที่อ้างอิงถึงหน่วยความจำนั้นได้อีกต่อไป ในทำนองเดียวกันวัตถุที่เข้าถึงไม่ได้ (unreachable object) คือ วัตถุที่จัดสรรแบบไดนามิกซึ่งไม่มีการอ้างอิง ใด ๆ ที่สามารถเข้าถึงได้ โดยทั่วไปแล้ว หน่วยความจำที่เข้าถึงไม่ได้คือหน่วยความจำแบบไดนามิกที่โปรแกรมไม่สามารถเข้าถึงได้โดยตรง หรือไม่สามารถเข้าถึงได้โดยเริ่มจากวัตถุที่สามารถเข้าถึงได้โดยตรง แล้วจึงติดตามลำดับการอ้างอิงของตัวชี้

ในการใช้งานการจัดสรรหน่วยความจำแบบไดนามิกที่ใช้ตัวเก็บขยะ (garbage collector ) วัตถุจะถูกเรียกคืนหลังจากที่ไม่สามารถเข้าถึงได้อีกต่อไป ตัวเก็บขยะสามารถตรวจสอบได้ว่าวัตถุนั้นสามารถเข้าถึงได้หรือไม่ วัตถุใดก็ตามที่ถูกพิจารณาว่าไม่สามารถเข้าถึงได้อีกต่อไปก็จะถูกปล่อยคืน (releaselocate ) ภาษาโปรแกรมหลาย ภาษา (เช่นJava , C# , D , Dylan , Julia ) ใช้การเก็บขยะอัตโนมัติ

ในทางตรงกันข้าม เมื่อหน่วยความจำไม่สามารถเข้าถึงได้ในระบบการจัดสรรหน่วยความจำแบบไดนามิกที่ต้องมีการคืนหน่วยความจำอย่างชัดเจน หน่วยความจำนั้นจะไม่สามารถคืนได้อย่างชัดเจนอีกต่อไป หน่วยความจำที่ไม่สามารถเข้าถึงได้ในระบบที่ใช้การจัดการหน่วยความจำแบบแมนนวลจะส่งผลให้เกิด การรั่วไหลของหน่วย ความ จำ

ตัวเก็บขยะบางตัวใช้การอ้างอิงแบบอ่อน (weak reference ) หากวัตถุสามารถเข้าถึงได้เฉพาะผ่านการอ้างอิงแบบอ่อนหรือสายโซ่ของการอ้างอิงที่รวมถึงการอ้างอิงแบบอ่อนแล้ว วัตถุนั้นจะเรียกว่าเป็นแบบอ่อนสามารถ เข้าถึงได้แบบอ่อน (weakly reachable ) ตัวเก็บขยะสามารถถือว่ากราฟวัตถุไม่สามารถเข้าถึงได้และปลดปล่อยหน่วยความจำ (ในทางกลับกัน การอ้างอิงที่ป้องกันไม่ให้วัตถุถูกเก็บขยะเรียกว่าแบบแข็ง (strong references) วัตถุที่สามารถเข้าถึงได้แบบอ่อนจะไม่สามารถเข้าถึงได้โดยสายโซ่ใดๆ ที่ประกอบด้วยการอ้างอิงแบบแข็งเท่านั้น)โปรแกรมเชิงวัตถุเช่นJavaและPythonมีการอ้างอิงแบบอ่อนแพ็กเกจ Javajava.lang.refรองรับการอ้างอิงแบบอ่อน (soft references) การอ้างอิงแบบอ่อน (weak references) และการอ้างอิงแบบผี (phantom references) ส่งผลให้สถานะการเข้าถึงวัตถุเพิ่มเติมคือสามารถเข้าถึงได้แบบอ่อน (softly reachableและสามารถเข้าถึงได้แบบผี (phantom reachable)

หน่วยความจำที่ไม่สามารถเข้าถึงได้ (ในภาษาโปรแกรม เช่น C ซึ่งไม่มีการเรียกคืนหน่วยความจำ) มักเกี่ยวข้องกับซอฟต์แวร์ที่เสื่อมสภาพตามอายุการใช้งาน

  • Nicholas, Ethan (4 พฤษภาคม 2549). "การทำความเข้าใจการอ้างอิงแบบอ่อน" . java.net. เก็บถาวรจากต้นฉบับเมื่อ 19 สิงหาคม 2553. สืบค้นเมื่อ1 ตุลาคม 2553 .
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Unreachable_memory&oldid=1117863331 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ หน่วยความจำที่เข้าถึงไม่ได้

ใน การเขียน โปรแกรมคอมพิวเตอร์หน่วยความจำที่เข้าถึงไม่ได้ (unreachable memory)คือบล็อกของหน่วยความจำที่จัดสรรแบบไดนามิกซึ่งโปรแกรมที่จัดสรรหน่วยความจำนั้นไม่มีตัวชี้ ใดๆ...

ลิงก์ภายนอก

Nicholas, Ethan (4 พฤษภาคม 2549). "การทำความเข้าใจการอ้างอิงแบบอ่อน" . java.net. เก็บถาวรจากต้นฉบับเมื่อ 19 สิงหาคม 2553. สืบค้นเมื่อ 1 ตุลาคม 2553 . ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Unreachable_memory&oldid=1117863331 "