คำตอบพื้นฐานที่สุด? ไม่ระบบปฏิบัติการจัดการการจัดการหน่วยความจำสำหรับผู้ใช้ - ให้กระบวนการมากที่สุดเท่าที่หน่วยความจำต้องการตามที่ร้องขอและไม่ได้ให้ทั้งจำนวนมากในแง่ของความสามารถในการปรับเปลี่ยนวิธีการทำงานของระบบ มันไม่ได้ช่วยอะไรมากมายกับการพยายามคิดออกว่าการใช้หน่วยความจำเป็นส่วนหนึ่งของสมการหรือไม่ว่าทำไมเซิร์ฟเวอร์ Linux ถึงมีประสิทธิภาพสูงกว่าเซิร์ฟเวอร์ Mac
เนื่องจากไม่มี "ความสามารถในการแฮ็ก" ในระบบหน่วยความจำเสมือนตัวเลือกที่ดีที่สุดของคุณคือการประเมินประสิทธิภาพของหน่วยความจำเสมือนเพื่อดูว่าเป็นสาเหตุของปัญหาด้านประสิทธิภาพหรือไม่ - พื้นฐานที่สุดคือการใช้vm_stat
หรือใช้งาน ใช้งานจริงโดยใช้vm_stat [number of seconds]
เพื่อดูว่ามีหน้ากระดาษเกิดขึ้นกี่หน้า การย้ายเพจที่ไม่ได้ใช้จาก RAM ไปยังฮาร์ดไดรฟ์มีค่าใช้จ่ายต่ำกว่าการดึงหน้ากลับจากฮาร์ดไดรฟ์ไปยัง RAM ของคุณ หน้าในเงื่อนไข OS X หมายถึงข้อมูลขนาด 4kb
นอกจากนี้กระบวนการแบบ 32 บิต (เช่น Illustrator) ไม่สามารถเข้าถึงมากกว่า 4GB ดังนั้นในทางทฤษฎีอาจเป็นไปได้ที่จะมี 2GB ฟรีและมีกระบวนการหน่วยความจำหมดหากคุณติดตั้ง 6GB
บนเดสก์ท็อปของคุณและเซิร์ฟเวอร์ฉันจะเรียกใช้vm_stat 2
และตรวจสอบคอลัมน์สุดท้าย - โดยเฉพาะอย่างยิ่งเมื่อคุณประสบกับความล่าช้าหลายวินาทีเมื่อเปลี่ยนไปใช้ Illustrator
du -shc /var/vm/swap* | tail -n 1
เพื่อหาวิธีการที่มีขนาดใหญ่สลับเป็นจริงคุณสามารถตรวจสอบขนาดของการแลกเปลี่ยนในกิจกรรมการตรวจสอบหรือการทำงาน
การใช้du -sh /var/vm
มีหนึ่งข้อแม้: สำหรับแล็ปท็อปที่มีโหมดไฮเบอร์เนต (ทุกอย่างในช่วง 4 ปีที่ผ่านมาหรือใหม่กว่า) อาจมีsleepimage
ขนาดของหน่วยความจำที่คุณติดตั้งไว้คร่าวๆ
Mac OS X หน่วยความจำศัพท์แสง:
สาย : สิ่งนี้อ้างถึงรหัสเคอร์เนลและเช่น หน่วยความจำที่ไม่ควรย้ายออกจาก RAM ยังรู้ว่าเป็นหน่วยความจำถิ่น
แชร์ : หน่วยความจำที่ใช้ร่วมกันระหว่างสองกระบวนการขึ้นไป กระบวนการทั้งสองจะแสดงจำนวนหน่วยความจำนี้ดังนั้นจึงอาจทำให้เข้าใจผิดเล็กน้อยว่ามีการใช้งานหน่วยความจำเท่าใด
จริง : นี่คือการใช้หน่วยความจำ "ของจริง" สำหรับแอปพลิเคชันที่รายงานโดย task_info () - จำนวนคร่าวๆของจำนวนหน้าฟิสิคัลที่กระบวนการปัจจุบันมี (rsize)
ส่วนตัว : นี่คือหน่วยความจำที่กระบวนการใช้เพียงอย่างเดียวในกระบวนการของตัวเองที่ใช้ในหน่วยความจำ Resident (RPRVT)
เสมือน : จำนวนพื้นที่ที่อยู่ทั้งหมดในกระบวนการที่แมปกับสิ่งใด - ไม่ว่าจะเป็นพื้นที่ขนาดใหญ่โดยพลการสำหรับตัวแปรหรืออะไรก็ตาม - มันไม่เท่ากับการใช้ VM จริง (VSIZE)
ใช้งานอยู่ : หน่วยความจำในปัจจุบันระบุว่าเป็นใช้งานอยู่และใช้ RAM
ไม่ได้ใช้งาน : "หน่วยความจำไม่ได้ใช้งานไม่ได้ถูกใช้งานอีกต่อไปและถูกแคชไว้ในดิสก์มันจะยังคงอยู่ใน RAM จนกว่าแอปพลิเคชันอื่นจะต้องการพื้นที่การทิ้งข้อมูลนี้ไว้ใน RAM จะเป็นประโยชน์ต่อคุณ เพื่อมันภายหลัง " - วิธีใช้ Mac OS X
ฟรี : จำนวน RAM ที่ใช้งานได้จริงโดยไม่มีข้อมูลใด ๆ
เอกสารที่ดีที่สุดที่ฉันรู้ (และสามารถค้นพบในการวิจัยติดตามผล) คือบทความMemory Management ของ Apple ในเว็บไซต์นักพัฒนาซอฟต์แวร์ของพวกเขา
แหล่งข้อมูลที่คุ้มค่าอื่น ๆ : รายการส่งเมลของดาร์วิน: [ 1 ], [ 2 ] และบทความเก่าบนMacOSX คำแนะนำ นอกจากนี้ Mike Ash ได้โพสต์แนะนำคนธรรมดาที่ดีในบล็อกของเขา
อาจเป็นไปได้ (ฉันไม่ได้ลอง) เพื่อปิดการใช้งานระบบหน่วยความจำเสมือนโดยการเรียกใช้sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
แล้วเริ่มต้นใหม่เพื่อให้ dynamic_pager (โปรแกรมที่จัดสรรหน่วยความจำเสมือนจริง) ไม่เริ่มทำงาน อย่างไรก็ตามเนื่องจากระบบปฏิบัติการสันนิษฐานว่ามีหน่วยความจำเสมือนคุณอาจพบว่าตัวเองกำลังประสบปัญหาอย่างรวดเร็วมาก ในการโหลดการสำรองข้อมูลเรียกใช้sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
(หากจำเป็นจากโหมดผู้ใช้คนเดียว)