Commit Charge / Physical Memory / Modified Memory และอื่นๆเกี่ยวกับ Memory Management

พอดีเกิดหาข้อมูลเรื่องนี้นิดหน่อย และคิดว่าน่าสนใจดี เลยขอแปลบันทึกไว้ เป็นความหมายของข้อมูลที่แสดงใน Process Explorer (บางตัวก็แสดงใน Task Manager ด้วย)

  • Commit Charge หรือ Committed ที่แสดงใน Task Manager หมายถึง จำนวนหน่วยความจำที่ถูกจองไว้โดยโปรแกรมทั้งหมด
  • Physical Memory (ไม่แน่ใจว่าคือ In Used หรือ Paged Pool ใน Task Manager) คือจำนวน Memory ที่ถูกใช้ไปจริง ๆ
  • Commit Limited คือจำนวนสูงสุดที่สามารถจอง Memory ได้ (มาจากขนาด RAM + ขนาด Pagefile)
  • Modified คือจำนวน Memory ที่ได้ถูกใช้ในระยะเวลานึง
  • Private Bytes คือจำนวน Memory ที่โปรแกรมขอ OS ไป
  • Working Set คือจำนวน Memory ที่อยู่ใน RAM ของโปรแกรมนั้น

ข้างล่างจะสรุปตามความเข้าใจนะครับ จะทิ้ง Reference ให้ท้ายสุดนะครับ ถ้ามีความรู้ภาษาอังกฤษแนะนำให้ไปอ่านต้นทางดีกว่าครับ เพราะละเอียดและถูกต้องกว่า

คือเมื่อโปรแกรมสั่งจอง Memory ในแบบ Commit ที่ VirtualAlloc จำนวน 2MB จำนวน Commit Charge จะเพิ่มขึ้น 2MB แต่ใน Physical Memory ยังไม่มีการใช้งานจริง จึงไม่เพิ่มขึ้น (อาจจะมีเพิ่มนิดหน่อยจาก Overhead)

ต่อมาเมื่อโปรแกรมได้ทำการเขียนข้อมูลลงบนตำแหน่งที่เราได้จองไว้ข้างต้นจริง ๆ ถึงจะเพิ่มค่า Physical Memory Usage และทำให้ Memory Available ลดลง

ต่อมาถ้าตำแนห่ง memory นั้นไม่ได้ถูกใช้งานเกินระยะเวลานึง และมีความต้องการ RAM จำนวนมาก อาจจะเกิดแบบนี้ขึ้น

  • OS จะนำตำแหน่งนั้นออกจาก Working Set
  • เนื่องจากมันเคยถูกเขียนแล้วมันจะถูกย้ายไป Modified Page list (ถ้าไม่เคยเขียนจะย้ายไป Standby)
  • เมื่อ Modified Page list มากถึงจุดๆนึง จะมีการย้ายข้อมูลลง Pagefile (ถ้ามันมีนะ)
  • ย้ายตำแหน่งนั้นจาก Modifed Page list ไป Standby แทน แต่ข้อมูลต้นฉบับยังอยู่ใน RAM อยู่ พร้อมใช้ได้ทุกเมื่อ ที่จุดนี้ RAM Available จะเพิ่มขึ้น (เพราะมันถือว่าเป็นข้อมูลที่เอาออกจาก RAM ได้แล้ว) และ Working Set จะลดลง
  • ตำแหน่งที่อยู่ใน Standby list สามารถเอากลับมาใช้ได้ทุกเมื่อ
  • ถ้าหากโปรแกรมนั้นพยายามจะใช้ตำแหน่งที่ย้ายไป Modifed หรือ Standby มันจะไปอ่านจาก Disk แล้วนำกลับเข้า RAM และใส่เข้าไปใน Working Set

ถ้าหากไม่มี Pagefile ข้อ 3-5 จะไม่คงอยู่ที่ Modified list และไม่ย้ายไปที่ disk เพราะมันไม่มี

ต้นฉบับ