2011-04-01 36 views
9

我以爲我瞭解MacOSX如何管理內存,但最近我對它的性能感到莫名其妙。這裏的情況是:在MacOSX中無法理解非活動內存

  1. 我有一個運行的MacOSX 10.6.7物理內存8GB一個全新的Core i7系統。
  2. 有幾個應用程序定期運行佔用一些內存 - Safari,Mail,Xcode,終端等。
  3. 我需要並行運行三個64位進程,每個應用程序使用大約2000M的實數記憶。
  4. 儘管有線存儲器保持在1000M以下(即我有超過7000M可用於進程),但是我看到繁重的尋呼活動導致了我啓動的三個內存密集型進程的非常糟糕的性能。
  5. 很顯然,我不運行的可用內存,因爲報道不活動的內存總是在那裏,2500M和活動內存不會超過5000M。

誰能給我一個線索,爲什麼MacOSX的不釋放對需要它的過程中無效的記憶,而不是訴諸分頁?另外,是否有任何適當的方式來影響系統的內存管理?

我唯一想到的是32位內核可能是限制因素,儘管我不知道爲什麼。我知道,你可以用64位內核引導MacOSX的,但後來我將無法加載了一些32位應用程序,所以這不是我的選擇。

+1

你問題的最後一句話並不完全正確。您仍然可以在64位內核上運行32位應用程序。你無法運行的*唯一的東西是32位內核擴展。看起來相對不太可能你擁有那些你根本無法生存的人。 – 2011-04-01 09:13:08

+0

感謝科迪,我不知道,所以我想我可能會嘗試64位內核。在這種情況下,我如何檢查哪些kext是32位的? – 2011-04-01 09:15:31

+0

請注意,我不一定建議這會解決你的記憶「問題」。我從來沒有在OS X上做過任何內存分析,所以我對它一無所知。您可以使用System Profiler的軟件選項卡或活動監視器來確定哪些kext是32位的。 – 2011-04-01 09:19:46

回答

8

好吧,顯然所需的解決方法是在MacOSX上使用purge命令。這將清除將大多數不活動內存標記爲空閒的緩存。看來,OS保持儘可能多的非活動內存儘可能以提高GUI的響應不幸影響的一些內存密集型工具的性能。

有一個線程與sister site一些額外的信息。

我想知道的MacOSX服務器是否會進行調整,以釋放更多的非GUI程序的非活動內存...

1

有在OS X的內存管理明顯問題......

請隨便看我的帖子:MAC OS X Lion performance problem - broken memory management 另外,我記錄一個屏幕視頻,其中在系統啓動時所有的空閒內存去掛,和無效的記憶是4-5 GB! MAC OS X Lion performance problem - screen video

我做了什麼...... 我在圖片/文件夾中運行大量圖片文件中的tar + bzip命令,這是基本的unix東西。就在開始之前,我運行「清除」命令,刪除非活動/緩存的程序數據。

您可以在視頻中看到空閒內存開始非常快速下降,並且非活動狀態持續上升。如果你看一看「的bsdtar」命令,只需要RAM的片段,所以這個問題是不是在這個過程中。你不能說這是一個程序內存泄漏,因爲那麼問題就不會處於非活動RAM,而在主動/有線。

當空閒內存降到100mb以下時,我啓動了一些應用程序,例如Safari,iPhoto和MS Word,並且您可以在視頻中看到啓動應用程序需要幾分鐘(!),有免費的RAM),加載需要3-5秒。

0

我有一個非常類似的問題:不活動的內存從來沒有釋放,所以硬盤不斷分頁。升級到MacOsX Mountain Lion終於修復了它。

0

在Mac OS X中,非活動內存構成當前未使用CPU週期的所有進程,即CPU使用率爲0%。另一方面,活動內存由使用CPU執行的所有進程組成。當啓動新的進程/程序時,它將成爲活動內存的一部分以及當前正在運行的其他進程(意味着CPU使用率)。如果可用內存足以調整新進程,則所有內容都可以正常工作,不需要任何分頁或交換。如果情況並非如此,那麼OS X會開始將不活動進程分頁到磁盤。現在釋放的內存塊一度被標記爲非活動狀態,現在可以作爲空閒內存使用。由於沒有可用的內存(除了新創建的空閒塊)之外,還有兩件事可能發生在這個新創建的可用內存中塊。無論是以前活動的一些進程(它們現在是非活動進程,因爲它們放棄了CPU),佔用這個空閒塊,以便這再次成爲非活動內存的一部分,或者這個空閒塊被分配給一些的活動進程,所以它現在是活動內存的一部分。故事的寓意並不複雜。即使幾乎沒有可用的空閒內存,無論正在運行的活動程序如何運行都可以運行。如果你必須啓動一個新程序,那麼最初的延遲將會在那裏,因爲OS X將不得不在內存中騰出最近最少使用的頁面(非活動進程)到慢速磁盤,從而增加加載時間。當你想將某些東西重新加載到內存中時,真正的痛苦就出現在OS X分頁的磁盤上。這就是快速I/O成爲大多數情況下離不開的必要條件。

相關問題