เหตุใดผู้คนจึงคิดว่าหน่วยความจำรั่วใน. NET ไม่เหมือนกับการรั่วไหลอื่น ๆ
หน่วยความจำรั่วคือเมื่อคุณแนบกับทรัพยากรและอย่าปล่อยให้มันไป คุณสามารถทำได้ทั้งในการจัดการและในการเข้ารหัสที่ไม่มีการจัดการ
เกี่ยวกับ. NET และเครื่องมือการเขียนโปรแกรมอื่น ๆ มีความคิดเกี่ยวกับการรวบรวมขยะและวิธีการอื่น ๆ ในการลดสถานการณ์ที่จะทำให้แอปพลิเคชันของคุณรั่วไหล แต่วิธีที่ดีที่สุดในการป้องกันการรั่วไหลของหน่วยความจำคือคุณต้องเข้าใจรูปแบบหน่วยความจำพื้นฐานของคุณและวิธีการทำงานต่าง ๆ บนแพลตฟอร์มที่คุณใช้งานอยู่
การเชื่อว่า GC และเวทมนต์อื่น ๆ จะทำความสะอาดความยุ่งเหยิงของคุณเป็นหนทางสั้น ๆ ในการจำการรั่วไหลและจะหาได้ยากในภายหลัง
เมื่อการเข้ารหัสที่ไม่มีการจัดการปกติคุณต้องแน่ใจว่าได้ทำการล้างข้อมูลแล้วคุณรู้ว่าทรัพยากรที่คุณใช้จะเป็นความรับผิดชอบของคุณในการล้างข้อมูลไม่ใช่ภารโรง
ใน. NET ในทางกลับกันผู้คนจำนวนมากคิดว่า GC จะล้างทุกอย่าง มันมีบางอย่างสำหรับคุณ แต่คุณต้องแน่ใจว่าเป็นเช่นนั้น .NET ห่อหลายสิ่งหลายอย่างดังนั้นคุณไม่ทราบว่าคุณกำลังเผชิญกับทรัพยากรที่มีการจัดการหรือไม่มีการจัดการหรือไม่และคุณต้องแน่ใจว่าคุณกำลังทำอะไรอยู่ การจัดการแบบอักษรทรัพยากร GDI ไดเรกทอรีที่ใช้งานอยู่ฐานข้อมูล ฯลฯ เป็นสิ่งที่คุณต้องระวัง
ในแง่การจัดการฉันจะใส่คอของฉันในบรรทัดเพื่อบอกว่ามันจะหายไปเมื่อกระบวนการถูกฆ่า / ลบ
ฉันเห็นคนจำนวนมากมีสิ่งนี้และฉันหวังว่ามันจะจบลง คุณไม่สามารถขอให้ผู้ใช้ยกเลิกแอปของคุณเพื่อกำจัดความยุ่งเหยิงของคุณ! ดูเบราว์เซอร์ที่สามารถเป็น IE, FF ฯลฯ จากนั้นเปิดพูด Google Reader ปล่อยให้มันอยู่ได้นานหลายวันแล้วดูว่าเกิดอะไรขึ้น
หากคุณเปิดแท็บอื่นในเบราว์เซอร์ให้ไปที่บางไซต์แล้วปิดแท็บที่โฮสต์หน้าอื่นที่ทำให้เบราว์เซอร์รั่วคุณคิดว่าเบราว์เซอร์จะปล่อยหน่วยความจำหรือไม่ ไม่เช่นนั้นกับ IE ในคอมพิวเตอร์ของฉัน IE จะกินหน่วยความจำ 1 GiB ในเวลาสั้น ๆ (ประมาณ 3-4 วัน) หากฉันใช้ Google Reader นักข่าวบางคนยิ่งแย่ลงไปอีก