พอดีเกิดหาข้อมูลเรื่องนี้นิดหน่อย และคิดว่าน่าสนใจดี เลยขอแปลบันทึกไว้ เป็นความหมายของข้อมูลที่แสดงใน 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 เพราะมันไม่มี
ต้นฉบับ
- https://superuser.com/questions/482678/commit-charge-is-100-full-but-physical-memory-is-just-60-when-using-no-page-fi
- https://superuser.com/questions/1174229/how-does-memory-commit-charge-work-in-windows-10/1174279#1174279
- https://superuser.com/questions/943175/windows-says-ram-ran-out-while-there-is-still-4-gb-of-physical-memory-available/943185#943185
- https://superuser.com/questions/618686/private-bytes-vs-working-set-in-process-explorer