Key Difference – กำจัด () กับ Finalize ()
ความแตกต่างที่สำคัญระหว่างการกำจัด () และการสิ้นสุด () คือการกำจัด () จะต้องถูกเรียกใช้อย่างชัดเจนโดยโปรแกรมเมอร์ในขณะที่ตัวรวบรวมขยะเรียกการสิ้นสุด () ก่อนทำลายวัตถุ
การกำจัด () เป็นวิธีการปิดหรือปล่อยทรัพยากรที่ไม่มีการจัดการ เช่น ไฟล์ สตรีมที่ถือโดยวัตถุ ขั้นสุดท้ายเป็นวิธีการดำเนินการล้างข้อมูลบนทรัพยากรที่ไม่มีการจัดการที่ถือโดยวัตถุปัจจุบันก่อนที่วัตถุจะถูกทำลาย
ทิ้งคืออะไร()?
ข้อดีอย่างหนึ่งที่สำคัญที่สุดของ. NET framework คือให้การรวบรวมขยะอัตโนมัติ มันจะปล่อยหน่วยความจำของวัตถุที่ไม่ได้ใช้โดยอัตโนมัติ ในภาษาการเขียนโปรแกรมเช่น C และ C++ โปรแกรมเมอร์ต้องจัดการหน่วยความจำด้วยตัวเอง แต่ในภาษาเช่น C ที่สร้างขึ้นบน. NET framework จะจัดเตรียมตัวรวบรวมขยะ ช่วยในการจัดการหน่วยความจำ ไม่สามารถใช้เพื่อปล่อยทรัพยากรหน่วยความจำที่ไม่มีการจัดการ วิธีกำจัด () สามารถใช้เพื่อบรรลุภารกิจนี้ได้
วิธีกำจัด () สามารถใช้เพื่อปล่อยทรัพยากร เช่น การเชื่อมต่อฐานข้อมูล ตัวจัดการไฟล์ ฯลฯ วิธีการนี้จะไม่ถูกเรียกโดยอัตโนมัติ ดังนั้นโปรแกรมเมอร์จึงควรใช้วิธีนี้ ทันทีที่เรียกวิธีนี้ หน่วยความจำสำหรับทรัพยากรที่ไม่มีการจัดการนั้นจะถูกปล่อยออกมา วิธีการนี้ถูกประกาศในอินเทอร์เฟซ IDisposeable
สุดท้ายคืออะไร ()?
วิธีการสิ้นสุดจะถูกเรียกโดยตัวรวบรวมขยะเท่านั้นเมื่อไม่มีการอ้างอิงไปยังวัตถุเพิ่มเติม วิธีนี้เรียกว่าก่อนทำลายวัตถุ วิธีนี้ดำเนินการโดยใช้ตัวทำลายล้าง วิธีการสรุปผลถูกกำหนดในคลาส java.lang.object วิธีนี้ได้รับการประกาศเป็นการป้องกัน ไม่ประกาศเป็นสาธารณะเพื่อหลีกเลี่ยงการเข้าถึงโดยคลาสอื่น โดยรวมแล้ว วิธีการปิดท้ายสามารถลดประสิทธิภาพของโปรแกรมได้ เนื่องจากจะทำให้หน่วยความจำไม่ว่างในทันที
ความคล้ายคลึงกันระหว่างการกำจัด () และการสิ้นสุด () คืออะไร
ทั้งการกำจัด () และการทำให้เสร็จสิ้น () สามารถใช้เพื่อเพิ่มหน่วยความจำที่จัดสรรให้กับทรัพยากรที่ไม่มีการจัดการ
ความแตกต่างระหว่างการกำจัด () และการสิ้นสุด () คืออะไร
ทิ้ง () vs จบ () |
|
การกำจัด () คือวิธีการปิดหรือปล่อยทรัพยากรที่ไม่มีการจัดการ เช่น ไฟล์ สตรีมที่ถือโดยวัตถุ | การสิ้นสุดเป็นวิธีการดำเนินการล้างข้อมูลทรัพยากรที่ไม่มีการจัดการที่ถือโดยวัตถุปัจจุบันก่อนที่วัตถุจะถูกทำลาย |
วัตถุประสงค์ | |
วิธีการกำจัดจะใช้เพื่อเพิ่มทรัพยากรที่ไม่มีการจัดการเมื่อถูกเรียกใช้ | วิธีการสิ้นสุดจะใช้เพื่อเพิ่มทรัพยากรที่ไม่มีการจัดการก่อนที่วัตถุจะถูกทำลาย |
อินเทอร์เฟซหรือคลาสที่กำหนด | |
การกำจัด () ถูกกำหนดในอินเทอร์เฟซ IDisposable อินเทอร์เฟซ | การสิ้นสุด () ถูกกำหนดในคลาส java.lang.object |
วิธีการเรียก | |
โปรแกรมเมอร์เรียกวิธีการกำจัด | วิธีสุดท้ายถูกเรียกโดยตัวรวบรวมขยะ |
ตัวระบุการเข้าถึง | |
วิธีการทิ้งเป็นแบบสาธารณะ | วิธีสุดท้ายได้รับการคุ้มครอง |
ความเร็ว | |
วิธีการกำจัดจะถูกเรียกใช้ทันที | เรียกวิธีการขั้นสุดท้ายอย่างช้าๆ |
ประสิทธิภาพ | |
การกำจัดจะไม่ลดประสิทธิภาพของโปรแกรม | วิธีการจบอาจลดประสิทธิภาพของโปรแกรม |
สรุป – กำจัด () vs จบ ()
บทความนี้กล่าวถึงความแตกต่างระหว่างวิธีการทิ้งและสรุปผลใน C ความแตกต่างระหว่าง dispose () และ finalize () คือ dispose () จะต้องถูกเรียกใช้โดยโปรแกรมเมอร์อย่างชัดเจนในขณะที่ตัวรวบรวมขยะเรียก finalize () ก่อนทำลายวัตถุ