หน่วยความจำที่ไม่ใช้งานไม่เปลืองทรัพยากรใช่หรือไม่


87

ฉันกำลังมองหาคำอธิบายของการใช้หน่วยความจำในเครื่องของฉันโดยเฉพาะอย่างยิ่งในตัวอย่างของภาพหน้าจอด้านล่างนี้:

การใช้ความจำ

ฉันเข้าใจว่าอะไรFreeและActiveหมายถึง
อะไร แต่ความหมายของWiredและInactiveคืออะไร?

โดยเฉพาะinactiveทำไมมันใช้หน่วยความจำมากสำหรับสิ่งที่เราไม่ได้ใช้?

คำตอบ:


142

หน่วยความจำที่ไม่ใช้งานมีการแร็พที่น่ากลัวเนื่องจากชื่อเส็งเคร็ง ควรเรียกสิ่งที่คล้ายกันว่า "ทำให้ Mac ของคุณเร็วขึ้นเป็นครั้งที่สองที่สามและครั้งที่สี่ที่มันทำงานเดียวกัน" หน่วยความจำยกเว้นว่าเป็นชื่อที่น่ากลัวเช่นกัน

Apple เขียนใหม่การตรวจสอบกิจกรรมเมื่อมีการเปิดตัวคุณสมบัติใหม่หลายอย่างและเพิ่มหน่วยความจำที่บีบอัดดังนั้นบางส่วนของสิ่งนี้ไม่ได้นำไปใช้กับ macOS ที่ไม่แสดง“ Inactive Memory” แต่ยังใช้กับการจัดการหน่วยความจำ Mac OS X เวอร์ชันของการตรวจสอบกิจกรรม: https://support.apple.com/th-th/HT201538

นี่คือวิธีที่ฉันอธิบายสิ่งต่าง ๆ ให้กับคนที่เพิ่งรู้จักกับแนวคิดของหน่วยความจำเสมือนบน OS X:

  • มีสาย : ระบบไม่สามารถทำงานได้หากไม่มี RAM (ไม่เคยสลับ)
  • ใช้งานอยู่: โปรแกรมกำลังใช้หน่วยความจำนี้จริง ๆ ในตอนนี้หรือในไม่กี่วินาทีที่ผ่านมา
  • ไม่ใช้งาน: สิ่งที่โปรแกรมอ่านจากดิสก์ช้าหรือที่อื่นและบอกว่าไม่จำเป็นต้องใช้อีก วิศวกรรู้ดีกว่าคุณจะกลับไปที่ Facebook ในไม่กี่นาทีหรือเปิดตัว Word อีกครั้งหลังจากเลิกใช้งาน สิ่งเดียวกันนี้เกิดขึ้นซ้ำแล้วซ้ำอีกในคอมพิวเตอร์
  • ฟรี: RAM ที่สูญเปล่าโดยสิ้นเชิง - ระบบต้องการเพียงหนึ่งหรือสอง MB ฟรีเพื่อครอบคลุมคำขอการจัดสรรระยะสั้น สำหรับการจัดสรรที่ใหญ่ที่สุดเพียงแค่ใช้ Inactive RAM บางส่วนโดยการจัดสรรให้เป็น active / wired และลบข้อมูลเกี่ยวกับสิ่งที่เคยใช้

ปัญหาเกิดขึ้นเมื่อฟรี + ไม่ได้ใช้งานน้อยกว่า 1/3 ของทั้งหมดแล้วสิ่งต่าง ๆ อาจช้าลงได้

หน่วยความจำที่ไม่ได้ใช้งานคือโบนัสความเร็ว / RAM หน้าที่สองเท่า มันทำหน้าที่ได้ฟรีทันทีที่แจ้งให้ทราบล่วงหน้า แต่ยังทำให้งานที่ทำซ้ำมากเร็วขึ้นมากถ้าระบบเดาได้อย่างถูกต้องและเก็บบางสิ่งใน RAM ที่คุณจะทำอีกครั้ง มันเร็วกว่าการเปลี่ยนหน่วยความจำเนื่องจากมันโหลดใน RAM แล้วและเร่งความเร็วเมื่อระบบหน่วยความจำเสมือนทำการเดาได้ดี

เมื่อคุณสงสัยว่า RAM เป็นปัญหาหรือไม่แทนที่จะดูที่หมวดหมู่ 4 หมวดหมู่ (5 ถ้าคุณนับจำนวน swap ที่ใช้งานอยู่) คุณสามารถจับคู่ W + A เป็นคู่เพื่อชะลอโปรแกรม / งานใหม่และ F + I เป็นการเร่งความเร็ว a โปรแกรมใหม่ / งาน ยิ่งคุณมี F + มากเท่าไหร่คุณก็จะสามารถเปิดโปรแกรมใหม่ได้มากขึ้นก่อนที่ RAM จะต้องพึ่งพาการสลับเพื่อเล่นหน่วยความจำที่จัดสรรไว้

คุณไม่จำเป็นต้องรู้เลยว่า swap ทำงานอย่างไรตั้งแต่ที่ฉันได้กล่าวไว้ข้างต้น โดยทั่วไปเมื่อโปรแกรมไม่ได้ทำงานและไม่ได้ใช้งานเป็นเวลาหลายวัน (หรือหลายชั่วโมง) ระบบจะเขียน RAM นั้นลงในฮาร์ดไดรฟ์แทนที่จะฆ่าโปรแกรม ซึ่งช่วยให้ระบบสลับและจัดการทุกสิ่งที่เกี่ยวข้องกับการจัดการหน่วยความจำและป้องกันไม่ให้แต่ละโปรแกรมต้องพูดคุยกันเองเพื่อยอมรับว่าใครจะใช้หน่วยความจำน้อยลงเมื่อระบบหมด

นี่คือตัวอย่างจริงของการใช้ RAM ที่ไม่ทำงาน

  1. ออกจากแอพทั้งหมดและตรวจสอบว่าแอพทั้งสองที่เราทำการทดสอบไม่ได้ถูกตั้งค่าให้เริ่มโดยอัตโนมัติเมื่อคุณเข้าสู่ระบบ
  2. รีบูตเครื่อง Mac ของคุณ
  3. เปิดไฟการตรวจสอบกิจกรรมและดู RAM ตลอด
  4. เวลาที่ใช้ในการเริ่มต้นแอปพลิเคชัน A ใช้เวลานานเท่าใด (MS Word จะเป็นตัวเลือกที่ดี)
  5. ออกจาก
  6. เวลาที่ใช้ในการเริ่มต้นแอปพลิเคชัน B ใช้เวลานานเท่าใด (Adobe ก็จะดีเช่นกัน)
  7. ออกจาก B
  8. เวลาที่การเปิดตัว A ครั้งที่สองใช้เวลานานเท่าใด
  9. ออกจาก
  10. การเปิดตัวครั้งที่สองของ Time B
  11. เวลา A เริ่มต้นครั้งที่สามโดยใช้ B

คุณควรเห็นการเร่งความเร็วอย่างรวดเร็วสำหรับการเปิดตัวครั้งที่สอง / สามในขณะที่ระบบเรียนรู้ที่จะเก็บ RAM ที่ไม่ใช้งานอยู่สิ่งต่าง ๆ ที่แอพทั้งสองนี้ต้องทำงาน


ในกรณีของคุณ - ทั้งหมดของ Wired and Active หมายความว่ามีการแลกเปลี่ยนกับดิสก์บางอย่างและ Mac ของคุณไม่เร็วเท่าที่ควรเนื่องจาก RAM ที่ไม่ใช้งานของคุณไม่ใหญ่พอที่จะเก็บทุกสิ่งที่คุณอาจจำเป็นต้องนำมาใช้ซ้ำ . หากคุณมีไดรฟ์ SSD ที่รวดเร็วการจัดสรร RAM นี้ก็โอเคและแทนที่จะเริ่มชะลอตัวเมื่อน้อยกว่า 1/2 ของ RAM ของคุณคือ F + I คุณสามารถตัดสิ่งต่างๆให้ใกล้เคียงกับเช่น 1/4 ของ RAM ทั้งหมดสำหรับ F + ฉันก่อนที่จะเห็นความเชื่องช้าอย่างเห็นได้ชัด หลักเกณฑ์เหล่านี้เป็นเรื่องทั่วไปและคุณจะต้องดูvm_stat 15หรือช่วงเวลาที่คล้ายกันเพื่อให้แน่ใจว่าการแลกเปลี่ยนวอลุ่มอย่างต่อเนื่องและปานกลางไม่ได้ทำให้ Mac ของคุณช้า


9
ว้าวคำตอบที่สมบูรณ์มากสำหรับผู้มาใหม่เช่นฉัน ขอบคุณมากชื่นชมมาก :)
GusDeCooL

6
ใช่ - ฉันได้รับคำตอบสำหรับทุกคน - ทุกครั้งผู้คนสามารถแก้ไขได้เพื่อให้ดีขึ้นและคุณจะได้รับคำตอบ แนวคิดที่ยอดเยี่ยมสำหรับเว็บไซต์ที่ผู้คนสามารถเข้ามาและถามคำถามที่น่าสนใจ :-)
bmike

3
ว้าว! คำตอบที่สวยงาม!
duci9y

3
ฉันหวังว่าพวกเขาจะอธิบายแบบนี้ในคลาส OS ของฉัน
สไตล์

2
@cvsguimaraes ล้างข้อมูลไม่ได้ทันที chat.stackexchange.com/transcript/message/12107920#12107920
Graham Perrin

6

จำนวนที่สำคัญที่สุดในการพิจารณาว่า Mac ของคุณได้รับหน่วยความจำที่ถูกตรึงเครียดหรือไม่ ในการตรวจสอบกิจกรรมใน Mavericks สิ่งนี้จะไม่ปรากฏอีกต่อไปพวกเขาจะแสดงข้อมูลใน 'Swap Used:'

Page outs หมายความว่าระบบปฏิบัติการได้พิจารณาว่ามี RAM ไม่เพียงพอที่จะเรียกใช้แอพพลิเคชั่นและกระบวนการทั้งหมดที่ได้รับการร้องขอ สิ่งที่มันทำคือ 'เพจ' ออกไปยังส่วนต่าง ๆ ของหน่วยความจำซึ่งกำหนดว่าไม่ได้ใช้งาน ซึ่งหมายความว่าหน่วยความจำ RAM (เร็ว) เปลี่ยนเป็นหน่วยความจำ HDD (ช้า) หากสิ่งนี้เกิดขึ้นบ่อยครั้งเนื่องจากมีแอปพลิเคชันจำนวนมากที่ทำงานอยู่และผู้ใช้ทำงานระหว่างแอปพลิเคชันดังนั้นจะมีหน้าเว็บจำนวนมากและหน้าเว็บ

หากคุณเห็นว่าการเพิ่มเพจผิดปกติคุณควรดำเนินการ


4

ปัญหาใน Mac ของฉันคือหน่วยความจำ "ไม่ได้ใช้งาน" ดูเหมือนจะไม่ถูกลบทิ้งเว้นแต่ว่าฉันจะทำการล้างข้อมูลด้วยตนเองในหน้าต่างคำสั่ง มันสร้างและสร้างจนกว่าฉันจะมีหน้าต่างป๊อปอัพบอกให้ฉันฆ่าแอปพลิเคชัน แม้หลังจากที่ฆ่าแอปพลิเคชันทั้งหมดของฉันแล้วฉันยังมีหน่วยความจำที่ไม่ได้ใช้งานมากเกินไปในการทำงานทุกอย่าง ดังนั้นใน Mac ของฉันที่ใช้ Mountain Lion เวอร์ชันล่าสุดไม่เป็นความจริงเลยที่หน่วยความจำไม่ทำงานจะถูกเรียกคืนเมื่อหน่วยความจำว่างเหลือน้อย อาจเป็นเพราะฉันมีแอพบางแห่งที่ล็อคหน่วยความจำที่ไม่ได้ใช้งานซึ่งไม่เคยได้รับอิสระมาก่อนหรือ iOS มีข้อบกพร่อง (ฉันมีหน่วยความจำกายภาพ 8GB ที่ควรจะพอ!)


2
ฉันอยู่กับคุณเออร์นี่ ... ใน Mac OS 10.6 และ 10.7 บน MacBook Pro และ Mac Pro หน่วยความจำที่ไม่ทำงานจะคืบคลานขึ้นและระบบปฏิบัติการจะเริ่มทำการแลกเปลี่ยน (ตาม "Page Ins" และ "Page Outs") และ ระบบจะรวบรวมข้อมูลเพื่อหยุด ดูเหมือนว่าหน่วยความจำที่ไม่ได้ใช้งานจะไม่ถูกเรียกคืน ฉันต้องใช้ "ล้างข้อมูล" เพื่อเรียกคืนหน่วยความจำที่ไม่ได้ใช้งานและทำให้ระบบใช้งานได้อีกครั้ง
เอริค

2
หน้าต่างป๊อปอัปนี้มาจากไหน สถานการณ์ของหน่วยความจำตามการรายงานคืออะไรvm_statเมื่อมันไม่เกิดขึ้น? อะไรทำให้คุณแน่ใจว่ามี "หน่วยความจำไม่ได้ใช้งาน" มากเกินไป "ในการรันอะไร"? เท่าที่ฉันกังวลนี่คือข่าวลือทั้งหมดที่ไม่มีการสำรองข้อมูลในรหัสที่คุณรู้ว่าจริง ๆ แล้วทำงานในเคอร์เนล
Kuba Ober

2
การจัดสรรหน่วยความจำของคุณมีลักษณะเหมือนที่ Gus นำเสนอหรือไม่ ที่นี่เรากำลังพูดถึงกิกะไบต์และสายกิกะไบต์และครึ่งที่ใช้งานอยู่ ปันส่วนไม่ได้ใช้งาน / ฟรีดูดีสำหรับฉันในสถานการณ์นี้ บางทีคุณอาจถามคำถามที่สองเกี่ยวกับสถานการณ์ที่คุณกำลังทำลาย
bmike

2

ขอบคุณผู้โพสต์และผู้แสดงความคิดเห็นทั้งหมดนี้เป็นหัวข้อที่ให้คำแนะนำและเป็นประโยชน์สำหรับฉัน ประสบการณ์ล่าสุดของฉันอาจเป็นประโยชน์กับใครบางคน ฉันใช้ Mac Mini กับ OS X10.8.1 และกับ 16G RAM ทั้งหมดสำหรับซอฟต์แวร์ต้นแบบที่จะทำงานที่อื่น ฉันรับรองได้ว่าฉันจะไม่ "กลับไปที่ Facebook ในเวลาไม่กี่นาทีหรือเปิดตัว Word อีกครั้งหลังจากเลิกใช้งาน" - ฉันทำเช่นนั้นกับ macbook แทน

งานของฉันคือกำจัดข้อมูลจำนวนมากโดยที่ i / o ใช้เวลานานดังนั้นความคิดคือการอ่านกลุ่มข้อมูลขนาดใหญ่เพื่อ ram มากที่สุดเท่าที่จะทำได้ในการประมวลผลครั้งเดียวแล้วเขียนกลับไปที่ดิสก์ จากนั้นทำซ้ำกระบวนการจนเสร็จซึ่งใช้เวลาบางชั่วโมง สิ่งที่ฉันเห็นคือทุกครั้งที่ฉันอ่านในกลุ่มข้อมูลใหม่หน่วยความจำที่ไม่ได้ใช้งานจะข้ามไป - ฉันคิดว่าระบบ AI จะถือว่าฉันอาจต้องการใช้ก้อนเก่าอีกครั้งซึ่งฉันทำ - และของฟรี หน่วยความจำลดลง

หลังจากทำซ้ำสองสามครั้งของกระบวนการนี้หน่วยความจำที่ว่างจะลดลงเหลือเพียงไม่กี่ MB หน่วยความจำที่ไม่ได้ใช้งานจะเพิ่มขึ้นอีกไม่กี่ MB และในที่สุดหลังจากผ่านไปหลายนาทีระหว่างหน่วยความจำว่างและหน่วยความจำที่ไม่ทำงาน เพิ่มขึ้นไม่กี่ GB ในครั้งเดียว ทั้งหมดเป็น @bmike อธิบายและทั้ง vm_stat 15 และการตรวจสอบกิจกรรมแสดง 0 หน้า - ออก

ยกเว้นอาจจะไม่มาก มีหลายครั้งที่สิ่งต่าง ๆ เคลื่อนตัวไปตามสระว่ายน้ำฉันออกไปดื่มกาแฟหรือทานอาหารเย็นและไม่ได้ตรวจสอบกระบวนการและสิ่งที่ไม่ควรเกิดขึ้นและกระบวนการนี้ก็ส่งผลให้หน้าเว็บช้าลงและช้าลง ระบุว่ามันอาจเป็นรหัสเส็งเคร็งของฉันที่ทำให้เกิดปัญหา แต่ฉันหวังว่าฉันจะปิดหน่วยความจำที่ไม่ได้ใช้งานเพียงเพื่อกำจัดแหล่งที่มาของความแปรปรวน มันหักหรือเปล่า? ฉันจะไม่พูดอย่างนั้น แต่ฉันจะบอกว่าฉันเดาว่าการจัดการหน่วยความจำไม่เหมาะสำหรับกรณีการใช้งานของฉัน


0

หน่วยความจำที่ไม่ได้ใช้งานซึ่งใช้งานโดยล่าสุดและออกจากแอพ OS X สงวนไว้ในกรณีที่ผู้ใช้ต้องการเปิดโปรแกรมอีกครั้ง เมื่อมันเกิดขึ้น OS X ไม่จำเป็นต้องย้ายหน่วยความจำที่เร่งความเร็วประสิทธิภาพ หากคุณไม่ได้เปิดโปรแกรมขึ้นมาใหม่หลังจากนั้นไม่นานหน่วยความจำของผู้ไม่ได้ใช้งานจะถูกเพิ่มหรือย้ายที่ตั้งใหม่ (c)

คุณสมบัตินี้ยอดเยี่ยมเมื่อคุณมี RAM จำนวนมาก แต่เมื่อมันไม่ได้เป็นที่น่ารำคาญมาก จริงๆแล้วมันเกี่ยวกับแอปเปิ้ลทุกอย่าง เมื่อคุณมีแกดเจ็ตหรือ Mac ที่มีประสิทธิภาพทุกอย่างเจ๋ง แต่เมื่ออุปกรณ์ของคุณกลายเป็นรุ่นเก่าคุณสมบัติทั้งหมดจะช้าลง

ดังนั้นคุณต้องใช้เทคนิคพิเศษในการจัดการมัน

สำหรับหน่วยความจำที่ไม่ได้ใช้งานมีคำสั่งpurgeให้ฟรี


-3

โดยทั่วไปมันเสีย RAM ที่ไม่ใช้งานควรเป็น "ล้าง" โดยอัตโนมัติเมื่อ Free RAM ต่ำ จุดประสงค์ของการถือครอง RAM สำหรับแอปพลิเคชันที่เปิดไว้ก่อนหน้านี้คืออะไรโดยหวังว่าผู้ใช้จะเปิดอีกครั้ง ข้อเท็จจริงที่ว่า Free RAM ต่ำแสดงว่าแอปพลิเคชัน ACTIVE ที่มีอยู่อาจมี RAM ไม่เพียงพอและกำลังทำการแลกเปลี่ยนทันที การรักษา GB of RAM สำหรับแอปพลิเคชันที่ปิดอยู่นั้นเป็นเพียงแค่ใบ้ ตามคำอธิบายของ Apple เองควรล้างหรือใช้งาน RAM ที่ไม่ใช้งานโดยอัตโนมัติเมื่อ Free RAM ต่ำ เห็นได้ชัดว่าไม่ใช่ในกรณีนี้


3
ระบบหน่วยความจำเสมือนทำให้เสียแรมจำนวนมากฟรี เมื่อโปรแกรมร้องขอการจัดสรรหน่วยความจำเคอร์เนลจะสร้างหน่วยความจำเสมือนมากขึ้นและส่งมอบให้เหมือนลูกอม เฉพาะเมื่อโปรแกรมเติมหน่วยความจำนั้นด้วยข้อมูลจริงระบบจะต้องทำให้มีพื้นที่ใน RAM สำหรับการดำเนินการนั้น "การสร้างห้อง" นั้นดึงมาจากหน่วยความจำที่ไม่ได้ใช้งานแล้วและความล่าช้าในการปลดปล่อยหน่วยความจำที่ไม่ได้ใช้งานนั้นมีขนาดเล็กมาก การล้างข้อมูลที่คุณอธิบายนั้นเป็นสิ่งที่เกิดขึ้น - เพียงแค่คุณบอกเป็นนัยว่าระบบควรทำการล้างข้อมูลให้ดีขึ้นเมื่อระบบขี้เกียจและใช้งานได้หากจำเป็นเท่านั้น
bmike

@bike แต่จะไม่หมวกหมายความว่าเมื่อไม่มี RAM ว่างเหลือและฉันเริ่มแอพใหม่ส่วน RAM ที่ไม่ทำงานจะลดลงและแอคทีฟจะเพิ่มขึ้นหรือไม่ เห็นได้ชัดว่าไม่ใช่กรณีและจากประสบการณ์ของฉันระบบจะช้ามากเมื่อใดก็ตามที่ไม่มีหน่วยความจำเหลือฟรีอีกต่อไปแม้ว่าจะมีหน่วยความจำที่ไม่ได้ใช้งานเป็นกิกะไบต์ ระบบดูเหมือนจะชอบการเปลี่ยนดิสก์ก่อนที่จะพิจารณานำ ram ที่ไม่ใช้งานกลับมาใช้ใหม่
codingFriend1

4
@ codingFriend1 ลองมาอย่างแม่นยำ - vm_statคุณคิดว่า "ไม่มี RAM ฟรีอีกกี่หน้า" เมื่อ Mac เป็น "ช้า" สิ่งที่หน้าในและหน้าออกนับเป็นvm_stat 1? เมื่อใดก็ตามที่ฉันดูสิ่งนี้ในระบบที่มีปัญหาฉันชอบที่จะvm_stat 15ทำงานในหน้าต่างเทอร์มินัล (หรือเข้าสู่ระบบไฟล์) เพื่อให้ฉันสามารถรู้ได้อย่างแม่นยำว่ากิจกรรมการเพจคืออะไรเมื่อตัดสินใจว่า / เมื่อใด เพจเจอร์ ตัวอย่างนี้มี RAM ว่าง 100 MB ดังนั้นจึงไม่น่าจะมีความกดดันในการเพจ
bmike

-4

หน่วยความจำที่ไม่ได้ใช้งานอยู่ในสาระสำคัญทำให้การเปิดก่อนหน้านี้กระบวนการปิดเร็วขึ้น หากคุณพบว่า Mac OS ใช้หน่วยความจำมากเกินไปคุณไม่จำเป็นต้องใช้แท็บมากมายที่คุณเปิดบน Safari หรือ Chrome เพียงแค่ใช้คำสั่ง 'ล้างข้อมูล' ในเทอร์มินัล ใน OS X Mavericks เพียงใช้ 'sudo purge' แทน (คุณจะต้องป้อนรหัสผ่านของคุณ) มันช่วยประหยัดเวลาอันมีค่าเมื่อคุณต้องการเปิดบางสิ่งบางอย่างอีกครั้ง แต่ถ้าคุณต้องการเล่นเกมที่ใช้แรมมากหรือเปิดแอพพลิเคชั่น RAM หิวฉันขอแนะนำให้ใช้คำสั่งล้างข้อมูลอย่างแน่นอน


2
สิ่งนี้แตกต่างจากคำตอบอื่น ๆ อย่างไร
user151019
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.