題:
非活動內存不是浪費資源嗎?
GusDeCooL
2012-10-11 16:54:25 UTC
view on stackexchange narkive permalink

我正在尋找機器上的內存使用情況的解釋,尤其是根據下面的屏幕截圖中的示例:

Memory Usage

我了解什麼是 Free Active 的意思是
但是 Wired Inactive 的含義是什麼?

特別是 inactive ,為什麼它為我們不使用的東西使用瞭如此多的內存?

七 答案:
bmike
2012-10-11 18:46:37 UTC
view on stackexchange narkive permalink

由於名稱不正確,無效的記憶引起了可怕的說唱。它應該被稱為“使Mac在第二,第三和第四次執行相同任務時真正快”內存,不過這也是一個糟糕的名字。

Apple在引入一些新功能並添加了壓縮內存時重新編寫了活動監視器,因此其中一些不再適用於未顯示“非活動內存”的macOS,但仍適用於Mac OS針對此版本的活動監視器記錄的X內存管理: https://support.apple.com/zh-cn/HT201538

以下是我向新手解釋的內容OS X上虛擬內存的概念:

  • 有線:沒有此數量的RAM(從不交換),系統無法運行
  • 活動:程序現在或最近幾秒鐘確實在使用此內存。
  • 不活動:程序從慢速磁盤或其他位置讀取的內容表示不再需要。 工程師了解得更多,您將在幾分鐘後返回Facebook,或者在退出Word之後重新啟動Word。相同的事情在計算機上一次又一次地發生。
  • 免費:完全浪費的RAM -系統僅需要一到兩個MB的空閒空間即可滿足短期分配請求。對於最大的分配,它只是通過將一些非活動RAM分配給活動/有線並刪除有關其過去持有的信息來使用它們。

當Free + Inactive較少時,就會出現問題超過總數的1/3,那麼事情真的會變慢。

不活動的內存是額外的速度/雙重任務RAM。在RAM中,您將再次執行。它比交換內存快,因為它已經加載到RAM中,並且在虛擬內存系統做出很好的猜測時可以加快速度。

如果您想知道RAM是否有問題,而不是查看4個類別中的每個類別(如果算上活動交換,則為5個類別),則可以將W + A與減慢新程序/任務的速度結合起來,將F + I減慢加快新程序/任務的速度。您擁有的F + I越多,在RAM需要依靠交換來處理已分配的內存之前,您可以啟動的新程序越多。

您真的不需要知道交換的工作原理。因為我在上面提到過基本上,當程序處於空閒狀態並且沒有使用數天(或數小時)時,系統會將該RAM寫入硬盤驅動器,而不是終止程序。這樣一來,系統就可以改組和處理與內存管理有關的各種事情,並使每個程序都無需相互討論,以同意在系統用盡時誰將使用更少的內存。

這是真實世界如何使用非活動RAM的示例。

  1. 退出所有應用程序,並確保登錄時我們正在測試的兩個應用程序未設置為自動啟動
  2. 重新啟動Mac
  3. 啟動您的活動監視器,並在整個過程中監視RAM
  4. 啟動應用程序A需要多長時間(MS Word是一個不錯的選擇)
  5. 退出A
  6. 啟動應用程序B所需的時間(Adobe也會有所幫助)
  7. 退出B
  8. 第二次啟動A所需的時間
  9. 退出A
  10. 時間B的第二次啟動。
  11. 時間A的第三次運行,且B運行。
  12. ol>

    您當系統學習將這兩個應用程序需要運行的內容保持在不活動的RAM中時,應該在第二次/第三次啟動時看到極大的加速。


    在您的情況下-有線和活動的總數意味著可能會發生某些磁盤交換,並且Mac的運行速度不如預期,因為您的非活動RAM不足以存儲您可能需要的所有內容需要重用。如果您有一個快速的SSD驅動器,則此RAM分配是可以的,並且可以在F + I的RAM小於1/2的情況下開始減慢速度,而不是開始減慢速度+ I在看到明顯的緩慢之前。這些準則是一般性準則,您需要觀看 vm_stat 15 或類似間隔,以確保連續和中等容量的交換不會使Mac變慢。

哇,像我這樣的新手,答案很完整。非常感謝,非常感謝:)
是的-我可以為每個人回答-一勞永逸,人們可以對其進行編輯以使其變得更好,然後您就會得到答案。一個網站的好主意,人們可以來問一些有趣的問題。 :-)
哇!漂亮的答案!
我希望他們在我的OS課中像這樣解釋它。
我從來不知道好答案。 +1。
僅在某些情況下,不活動的內存才是獎勵速度。如果您使用各種程序,則可能會出現問題,因為按需釋放不活動的內存顯然需要時間。在下一次非緩存應用啟動時將添加的時間。在我的Mac mini(i5)上,我之前清除不活動的內存時,Photoshop CS5的啟動時間要少7〜10秒。
只要您不可視化,就可以使用不活動的內存,即使您有足夠的內存供VM和OS X使用;可視化時的磁盤緩存會使Mac停止運行,並且緩存的內存無濟於事。
VM軟件(Fusion,virtualbox或其他工具)應該做得很好,可以使內存保持連線或活動狀態,從而使VM受益。您是否遇到特定問題?
@cvsguimaraes清除不是即時的; http://chat.stackexchange.com/transcript/message/12107920#12107920
@kbyrdm * VM *在這裡可能表示虛擬內存(不是虛擬機)。
-1
不確定是否在其他地方引用了此方法,但是這裡提供了很好的參考(尤其請參閱“內核中的頁面列表”:http://developer.apple.com/library/mac/documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory。 html
派對晚點交換到SSD可能是一個非常糟糕的主意。儘管性能的下降遠不及旋轉介質,但對同一塊的頻繁寫入會相當快地殺死閃存(以年為單位,但不是數十年)。
@agentroadkill交換始終不是一個好主意-實際上,我認為單個Apple SSD並不是一個問題。即使第三方SSD在這方面也做得非常出色-我理解您最終將用盡所有寫入的理論,實際上,我只是沒有看到人們願意忍受足夠交換的系統而引起關注。
-1
包括我在內的一些用戶抱怨不活動的內存拒絕清除。但是,這已經不是很長一段時間了。不知道這是一個錯誤還是什麼。一個投訴示例:https://superuser.com/questions/460658/why-os-x-use-swap-when-there-is-lots-of-inactive-memory
應該被稱為“磁盤緩存”之類的東西。現在稱為“緩存文件”。在Linux的“ top”中,等效的東西稱為“緩存的內存”。
這就是為什麼我第一次打開程序比第二次慢得多的原因嗎?
是的@JBis-在許多情況下,緩存是多層的,因此第一個打開需要加載共享庫,加載私有庫,從存儲讀取緩存和應用程序狀態,可能需要運行Internet檢查更新-可以第二次啟動由於這一點以及其他機制,速度大大提高。
@bmike與“ sudo清除”(顯然沒有[目的](https://apple.stackexchange.com/a/127285/263848))有關,聲稱清除和清除內存的應用程序有哪些用途?它們有益嗎?(也許完全是一個新問題)示例:https://itunes.apple.com/us/app/memory-clean-free-up-memory/id451444120?mt=12 https://itunes.apple.com/us/ app / dr-cleaner-disk-mem-clean / id921458519?mt = 12
如何重新加載Facebook可能重用以前分配的內存部分?
FromOZ
2013-10-26 21:21:28 UTC
view on stackexchange narkive permalink

在確定您的Mac是否正在“緊張”內存時,最重要的數字是“頁面輸出”數字。在Mavericks的“活動監視器”中,不再顯示此信息,它們現在在“已使用的交換:”中顯示信息。

缺頁表示操作系統已確定沒有足夠的可用RAM來運行所有應用程序&進程已被要求。然後,它執行的操作是將其“分頁”到其未確定正在使用的內存的磁盤部分。這意味著RAM存儲器(快速)更改為HDD存儲器(慢速)。如果由於正在運行大量應用程序而導致發生這種情況的次數很多,並且用戶正在應用程序之間切換,那麼將會有很多頁面輸出和頁面輸入。那麼您應該採取行動。

Ernie
2013-07-25 20:34:06 UTC
view on stackexchange narkive permalink

在Mac上的問​​題是,除非我在命令窗口中進行手動清除,否則似乎永遠不會清除“非活動”內存。它會不斷累積,直到出現一個彈出窗口告訴我殺死應用程序為止。即使殺死了我所有的應用程序,我仍然有太多的非活動內存來運行任何東西。因此,在運行最新版本Mountain Mountain Lion的Mac上,當可用內存不足時,非活動內存會被回收是不正確的。我在某個地方的某個應用程序已鎖定了一塊永遠不會釋放的不活動內存,或者iOS中存在一個錯誤。 (我有8GB的物理內存...應該足夠了!)

我與您同在,Ernie ...在MacBook Pro和Mac Pro的Mac OS 10.6和10.7中,不活動的內存將逐漸增加,並且操作系統將開始交換(根據“ Page Ins”和“ Page Outs”),並且系統將停止爬行。非活動內存似乎永遠不會被回收。我必須使用“清除”來回收不活動的內存,然後再次使我的系統活動。
該彈出窗口從何而來? vm_stat報告發生時的內存狀況如何?是什麼讓您如此確定“活動”中可能存在“過多”的非活動內存?就我而言,這是所有傳聞,在您知道的代碼中沒有任何支持,實際上是在內核中運行的。
您的內存分配看起來像Gus呈現的內容嗎?在這裡,我們談論的是一個千兆字節的有線空間和一個千兆字節半的活動空間。在這種情況下,不活動/免費配給對我來說看起來不錯。也許您會問第二個問題,詳細說明發生問題的情況?
@Eric您是否曾經想過如何清除以恢復不活動的內存?
@Ernie簡短答案:否。更長的答案:距最初的問題已經有將近7年了,甚至我(他們等待數年才能升級到新的MacOS版本)也分別達到10.13和10.14,這兩個都不再報告不活動內存。我想不起來是否曾經在10.6或10.7上解決此問題。我沒有在10.13或10.14中註意到任何類似的行為。
user100345
2014-08-06 07:52:31 UTC
view on stackexchange narkive permalink

感謝所有張貼者和評論者,這對我來說是一個很有啟發性和有用的話題。我最近的經驗可能對某人有用。我將Mac Mini與OS X10.8.1和16G RAM完全結合使用,以製作將在其他地方運行的原型軟件。我可以向您保證,我不會“幾分鐘後返回Facebook或退出它後重新啟動Word”,而是在Macbook上執行。

我的任務是整理大量數據,I / O非常耗時,所以我們的想法是一次讀取盡可能多的數據,然後在那裡進行處理,然後將其寫回到磁盤,然後重複該過程直到完成,這需要幾個小時。我看到的是,每次讀取新的數據塊時,不活動的內存都會跳躍-我假設系統AI假設我可能想再次使用舊的塊,而我不希望使用-而免費的內存下降。

在此過程中進行了幾次迭代後,可用內存減少到只有幾MB,不活動的內存將釋放更多的MB,然後最終在空閒和不活動之間退回了幾分鐘的&forth內存,不活動的內存將立即釋放幾GB。全部都是@bmike所描述的,並且vm_stat 15和“活動”監視器都顯示0個頁面調出。

除了可能不太一樣。有好幾次事情一直在暢快地進行著,我下班去喝咖啡或晚餐,並且沒有監視該過程,不應該發生的事情突然發生了,該過程突然中斷了頁面輸出並減慢了速度。指出可能是我糟糕的代碼導致了這個問題,但我希望我可以關閉不活動的內存只是為了消除這種可變性源。我完全不會這麼說,但我想我想我的用例並未對內存管理進行優化。

A. Shulev
2015-11-02 23:03:41 UTC
view on stackexchange narkive permalink
最近被激活和退出的應用程序使用的

非活動內存。如果用戶想再次打開該程序,則OS X會將其保留。碰巧的是,OS X不需要重新定位內存以加快性能。如果您不重新打開程序,則一段時間後,不活動的內存將被釋放或重新定位。(c)

當您有大量RAM時,此功能很酷,但如果不是,那會很煩人。實際上,這全都與蘋果相關。當您擁有功能強大的小工具或Mac時,一切都會變得很酷,但是當設備變舊時,所有功能都會使其變慢。

因此,您必須使用特殊的技巧來進行管理。

對於不活動的內存,有一個 purge 命令可以釋放它。

rouser
2013-02-01 08:15:45 UTC
view on stackexchange narkive permalink

基本上壞了。當可用RAM較低時,應該自動“清除”不活動的RAM。為以前打開的應用程序保留RAM的目的是什麼,希望用戶再次打開它?可用RAM不足的事實表明現有的ACTIVE應用程序可能沒有足夠的RAM,並且正在交換。為封閉的應用程序保留GB RAM只是愚蠢的。根據Apple自己的描述,閒置RAM不足時應自動清除或借用不活動RAM。顯然不是這種情況。

虛擬內存系統浪費了大量的可用RAM。當程序要求分配內存時,內核會組成更多的虛擬內存並將其像糖果一樣分發出去。僅當程序用實際數據填充該內存時,系統才需要在RAM中為該操作騰出空間。這種“騰出空間”是從空閒的然後是不活動的內存中拉出來的,釋放不活動內存的延遲非常小。您描述的清除實際上就是發生的事情-只是意味著您暗示系統應該在系統懶惰時預先進行清除工作,並且只有在需要時才進行清除。
@bmike但是,難道不意味著當沒有可用的RAM並啟動新應用程序時,不活動的RAM部分將減少而活動的部分將增加嗎?顯然不是這種情況,並且根據我的經驗,每當沒有可用的ram時,系統就會變得非常慢,儘管有數GB的非活動ram。系統似乎在考慮重新使用非活動內存之前更喜歡交換磁盤。
-1
Kaness K
2013-10-28 18:29:29 UTC
view on stackexchange narkive permalink

實質上,非活動內存使打開以前關閉的進程的速度更快。如果您發現Mac OS佔用了過多的內存,則不需要真正使用,例如在Safari或Chrome上打開的數十個選項卡中,只需在終端中使用“清除”命令即可。在OS X Mavericks中,只需使用“ sudo purge”(您需要輸入密碼)即可。當您需要再次打開某些東西時,它節省了寶貴的時間,但是如果您想玩RAM密集型遊戲或打開RAM飢餓的應用程序,我絕對建議您使用purge命令。

這與其他答案有何不同?


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...