為什麼mac 的程或會這麼吃資源的

本區專門提供 Mac OS X 使用者交換使用心得

版主: ross_ttbryanchangdigdogchester

回覆文章
內容
發表人
kevinckc
留言破百
文章: 171
註冊時間: 07/05/2004 12:02 am
來自: 香港
聯繫:

為什麼mac 的程或會這麼吃資源的

#1 文章 kevinckc »

我看看activity monitor 的時候,發現一個簡單的 world clock dashboard 也需要用到7mb RAM 和 141.91mb virtual memory, 真不明白一個時鐘要一百mb記憶體來幹什麼, 有人知道嗎? 謝謝
pojen
留言破百
文章: 114
註冊時間: 03/09/2005 10:29 pm

#2 文章 pojen »

PART I

其實小弟我也有一樣的問題. 在我的 PM 上記憶體似乎不能被正確的釋放. 常常一晚醒來, 3G 的記憶體都被標示 inactive. (我只讓 PM 睡眠) 爬文後發現這是正常的

一樣的問題也發生在用 vlc 預覽 hdtv 影片時會發生. 約每秒有 10mb 的記憶體被標示 inactive. 過不了多久就聽到硬盤轉的聲響. 記憶體的方面沒有問題, 但是我還是對於硬碟轉聲有點好奇..

dashboard 的記憶體佔用也分可觀.. 每個程序實體佔用 25, Virtual 佔用至 230 mb.. (safari 實體 187, virtual 735) 更新: 無影響, 繼續用下去就對了. avtive monitor 只是好看的~

我不清楚這是不是 bug, (嘆... 什麼時候才有時間爬文..) 我預計這星期打去 apple care 問一下是不是需要手動釋放 inactive 的記憶體. 如果知道再來和大家分享. 終於拜讀完 Kappy 大大提供的第一份文件. 雖然第三章之後對我來說有如天書一般(關於 memory leak, debug.. 等等) 但是從前面 1, 2 章已經大致上了解 os x 的分工方法. 結論就如同 ted 提到的, 不要裡它就是了~

(平常我是不會在乎的, 但是遇到吃資源的軟體, 如用 FCP 做 render 時, 這就有點討厭.. 我目前是在使用大型軟體時先重新開機, 在記憶體被吃光前做完.. 不知這是否是 tiger 快速開機的另一個優點(笑~))

PART II

剛剛又看了一下, 在 apple 的官網上找到這個;

http://discussions.info.apple.com/webx? ... 68b0a724/0

其中 Kappy 大大提到的連結(第一個)
http://developer.apple.com/documentatio ... index.html

看來就是問題解答了. [見上方紅字更新]

ps. 回 kevinckc 同學的問題, 可以參考第二個連結. 它的第一段話回答了你的問題.
irtual memory (VM) is just what it says -- "virtual" -- it really doesn't exist. The VM size is NOT consuming any disk space.

Unless a user's X system is performing swapping there's absolutely no need to worry about the swap file size nor its location. Swapping activity is provided by observing the "0(0) pageouts" in the last header line of the Terminal top command. Another useful Terminal command is the vm_stat(1) command (see man vm_stat). This command also displays the number of Pageouts. The pageout value is an indication that physical memory is being paged(swapped) to the swap file. This i/o is done in page chunks. A page chunk is 4096 bytes in size.
ted 大大的黃金三定律
a) don't be too worried about free memory being small in the top's display

b) keep an eye on pageouts and if increasing rapidly with time reduce machine's workload or add RAM if workload is a requirement.

c) Don't mess with relocating or sizing the swapfile -- an interesting exercise but really quite futile for the average Joe using X on iBooks, iMacs, etc. You simply should avoid severe swapping at all cost.
kevinckc
留言破百
文章: 171
註冊時間: 07/05/2004 12:02 am
來自: 香港
聯繫:

#3 文章 kevinckc »

謝謝 pojen 的回覆,因為時間關係,我會晚一點再看兩個LINK的內容,但很多謝你的資料
頭像
rlong
嗜冰客
文章: 1530
註冊時間: 04/30/2001 1:01 am
來自: 新竹
聯繫:

#4 文章 rlong »

請容我這個外行人說一些不負責任的話,若有錯誤,請高抬貴手,因為總有一些衛道人士不以為然!

APPLE以前是用 PASCAL寫作業系統的,到了OSX則改用 Objective C.
Objective C是一個模組化相當徹底的語言,孫子呼叫兒子、兒子呼叫老子、爸爸叫爺爺、爺爺去問祖父...

越高階的語言,越模組化的程式,開發的時間越短,節省人力,大幅提高系統的穩定度,
但另一方面也相對的必須付出一定的代價,那就是說,消耗大量的系統資源,降低效率是必然的現象。

這就是為什麼要求效率,速度的地方還是要用組合語言來coding,的道理。 :? 8) :lol: :badgrin:
I love OPERA !
JCE10
新生訓練中
文章: 3
註冊時間: 05/05/2005 11:03 am

#5 文章 JCE10 »

其實現在的OS對記憶體的處理,很多都是採取懶惰愛理不理的態度
就像world clock跟MacOS要100MB的RAM,MacOS答應給它
但是world clock如果現在只用到5MB,那OS幹嘛浪費力氣真的搬100MB給它?
等到有用到再搬給world clock就好了,所以不要被Virtual memory大小給騙了,其實那是正常的

反過來說,當一個程式結束時,MacOS當然也沒有必要把用剩的記憶體全部要回來
浪費力氣幹嘛? 有其他人要用再搬給他們就好了
所以free memory很少其實不見得是問題,如果inactive+free memory夠就好
fatkit
留言破百
文章: 179
註冊時間: 05/02/2001 1:01 am
來自: 香港
聯繫:

#6 文章 fatkit »

這個我也發現,如果經常開一大堆程式在跑,那即使將程式全部關掉記憶體也不會一下子回到開機時的模樣,但一段時間之後系統就會慢慢都記憶體交回來了。
網上動畫、漫畫。視遊戲評論月刊Format-ACG
http://www.foramt-acg.org
回覆文章