คำถามติดแท็ก resource-allocation

6
เหตุใดการรวบรวมขยะจึงขยายไปยังหน่วยความจำเท่านั้นและไม่ใช่ประเภททรัพยากรอื่น ๆ
ดูเหมือนว่าผู้คนเบื่อการจัดการหน่วยความจำด้วยตนเองดังนั้นพวกเขาจึงคิดค้นการรวบรวมขยะและชีวิตก็ดีพอสมควร แล้วทรัพยากรประเภทอื่น ๆ ล่ะ? อธิบายไฟล์, ซ็อกเก็ตหรือแม้กระทั่งข้อมูลที่ผู้ใช้สร้างขึ้นเช่นการเชื่อมต่อฐานข้อมูล? นี่รู้สึกเหมือนเป็นคำถามที่ไร้เดียงสา แต่ฉันไม่สามารถหาที่ใดก็ได้ที่มีคนถาม ลองพิจารณาตัวอธิบายไฟล์ สมมติว่าโปรแกรมรู้ว่าจะอนุญาตให้มี 4000 fds เท่านั้นเมื่อเริ่มทำงาน เมื่อใดก็ตามที่มันทำการดำเนินการที่จะเปิดไฟล์อธิบายสิ่งที่มันจะ ตรวจสอบให้แน่ใจว่าไม่ได้กำลังจะหมด หากเป็นเช่นนั้นให้เรียกตัวเก็บรวบรวมขยะซึ่งจะทำให้หน่วยความจำว่างมากขึ้น หากหน่วยความจำบางส่วนถูกปล่อยให้อ้างอิงกับตัวให้คำอธิบายไฟล์ให้ปิดทันที มันรู้ว่าหน่วยความจำเป็นของทรัพยากรเพราะหน่วยความจำที่เชื่อมโยงกับทรัพยากรนั้นได้รับการลงทะเบียนใน 'file descriptor registry' เนื่องจากไม่มีคำศัพท์ที่ดีกว่าเมื่อมันถูกเปิดครั้งแรก เปิดตัวให้คำอธิบายไฟล์ใหม่คัดลอกลงในหน่วยความจำใหม่ลงทะเบียนตำแหน่งหน่วยความจำนั้นใน 'ตัวให้คำอธิบายไฟล์' และส่งคืนไปยังผู้ใช้ ดังนั้นทรัพยากรจะไม่ถูกปล่อยออกมาโดยทันที แต่มันจะถูกปล่อยให้เป็นอิสระเมื่อใดก็ตามที่ gc วิ่งซึ่งรวมถึงอย่างน้อยที่สุดก่อนที่ทรัพยากรจะหมดลงโดยสมมติว่ามันไม่ได้ถูกใช้ทั้งหมด และดูเหมือนว่าจะเพียงพอสำหรับปัญหาการล้างทรัพยากรที่ผู้ใช้กำหนด ฉันจัดการเพื่อค้นหาความคิดเห็นเดียวที่นี่ที่อ้างอิงทำล้างคล้ายกับใน C ++ กับกระทู้ที่มีการอ้างอิงไปยังทรัพยากรและล้างมันขึ้นเมื่อมีเพียงการอ้างอิงเดียวที่เหลืออยู่ (จากเธรดการล้างข้อมูล) แต่ฉันสามารถ ' ไม่พบหลักฐานการเป็นห้องสมุดหรือส่วนหนึ่งของภาษาที่มีอยู่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.