เริ่มจากการตั้งค่าหน่วยความจำว่าไกล (หลายสิบหลายร้อยหรือหลายพันครั้ง) กันมากกว่าทรัพยากรอื่น ๆ ทั้งหมดที่รวมกัน ทุกตัวแปรวัตถุวัตถุสมาชิกวัตถุต้องการหน่วยความจำบางส่วนที่จัดสรรให้กับมันและเป็นอิสระในภายหลัง สำหรับทุกไฟล์ที่คุณเปิดคุณสร้างวัตถุหลายสิบถึงล้านวัตถุเพื่อเก็บข้อมูลที่ดึงออกมาจากไฟล์ สตรีม TCP ทุกตัวไปพร้อมกับสตริงไบต์ชั่วคราวจำนวนไม่ จำกัด ที่สร้างขึ้นเพื่อเขียนไปยังสตรีม เราอยู่ในหน้าเดียวกันที่นี่หรือไม่? ยิ่งใหญ่
สำหรับ RAII ในการทำงาน (แม้ว่าคุณจะมีตัวชี้สมาร์ทสำเร็จรูปสำหรับกรณีการใช้งานทุกภายใต้ดวงอาทิตย์), คุณจำเป็นต้องได้รับความเป็นเจ้าของที่ถูกต้อง คุณต้องวิเคราะห์ว่าใครควรเป็นเจ้าของสิ่งนี้หรือวัตถุนั้นที่ไม่ควรและเมื่อโอนความเป็นเจ้าของจาก A ไป B แน่นอนคุณสามารถใช้ความเป็นเจ้าของร่วมสำหรับทุกสิ่งแต่จากนั้นคุณจะทำการจำลอง GC ผ่านพอยน์เตอร์อัจฉริยะ ณ จุดนั้นมันง่ายขึ้นและเร็วขึ้นในการสร้าง GC เป็นภาษา
การรวบรวมขยะทำให้คุณไม่ต้องกังวลกับทรัพยากรและหน่วยความจำที่ใช้กันมากที่สุด แน่นอนว่าคุณยังคงต้องทำการตัดสินใจเดียวกันสำหรับทรัพยากรอื่น ๆ แต่สิ่งเหล่านั้นมีน้อยกว่าปกติ (ดูด้านบน) และความเป็นเจ้าของ (เช่นแบ่งปัน) ที่ซับซ้อนนั้นก็เป็นเรื่องธรรมดาน้อยเช่นกัน ภาระทางจิตจะลดลงอย่างมีนัยสำคัญ
ตอนนี้คุณตั้งชื่อข้อเสียบางอย่างเพื่อทำให้ค่าทั้งหมดเก็บรวบรวมขยะ อย่างไรก็ตามการรวมทั้ง GC- หน่วยความจำที่ปลอดภัยและประเภทค่ากับ RAII เป็นหนึ่งภาษานั้นยากมากดังนั้นอาจเป็นการดีกว่าถ้าจะโยกย้ายการแลกเปลี่ยนเหล่านี้ด้วยวิธีอื่น
การสูญเสียการกำหนดในระดับที่จะไม่เลวร้ายในทางปฏิบัติเพราะมันมีผลต่ออายุการใช้งานของวัตถุที่กำหนดเท่านั้น ตามที่อธิบายไว้ในย่อหน้าถัดไปทรัพยากรส่วนใหญ่ (นอกเหนือจากหน่วยความจำซึ่งมีอยู่มากมายและสามารถนำกลับมาใช้ใหม่ได้อย่างเกียจคร้าน) ไม่ได้ผูกติดกับอายุการใช้งานของวัตถุในภาษาเหล่านี้ มีอีกสองสามกรณีที่ใช้ แต่พวกเขาหายากในประสบการณ์ของฉัน
ปัจจุบันจุดที่สองของคุณคือการจัดการทรัพยากรแบบแมนนวลได้รับการแก้ไขผ่านข้อความที่ดำเนินการล้างข้อมูลตามขอบเขต แต่ไม่ได้ทำการล้างข้อมูลให้สอดคล้องกับเวลาชีวิตของวัตถุ (ดังนั้นการไม่โต้ตอบกับ GC และหน่วยความจำปลอดภัย) นี่คือusing
C #, with
ใน Python, try
-with-resources ใน Java เวอร์ชันล่าสุด