全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1875
推到 Plurk!
推到 Facebook!

為何將程式最小化後可以減少數倍的記憶體耗用

答題得分者是:dllee
China Join
中階會員


發表:81
回覆:242
積分:89
註冊:2003-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-12 19:38:35 IP:218.170.xxx.xxx 未訂閱
開一個新的專案(什麼都不作)然後執行大約佔用 7M 的記憶體,將其最小化後佔用的記憶體竟然只有 800 多 K,怎麼差那麼多! 小弟想應該是 Windows 把最小化的程式當成背景處理,將原來放在記憶體的東西丟到硬碟的虛擬記憶體,是這樣嗎?? 那我們可不可以利用這個原理在不最小化的情形下,壓縮我們的程式所佔用的記憶體容量呢? 請各位先進們賜教 3Q !
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-12 21:41:31 IP:61.224.xxx.xxx 未訂閱
應該是沒辨法吧! 程式占用記憶體的問題,在去年有討論過...    ■ 記憶體釋放程式 BCB 版 (附Source Code) http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19848    ■ 關於Windows 記憶體管理的原理 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19878    ■ [心得] 要求系統釋放記憶體  http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19907    我們所執行的程式主要是占用虛擬記憶體,至於會不會用到實體記憶體,則由系統決定。當最小化後,系統將大部分 UI 的部分都釋放了,如果應用程式 UI 占用記憶體多的話,最小化可能可以省很多,但如果本來就沒有什麼 UI 都是背景計算的話,最小化也不會省太多。如果您想要在不最小化將記憶體給釋放掉,其實您可以使用上述的記憶體釋放軟體,在應用程式全開的情況,努力釋放,釋放到幾乎不行的地步,例如:512MB 的記憶體,在開啟多個應用程式後,釋放到只占用 100MB 不到的實體記憶體,這時,您切換應用程式時就會發現系統變得「超慢」!    沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
China Join
中階會員


發表:81
回覆:242
積分:89
註冊:2003-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-12 23:44:24 IP:218.170.xxx.xxx 未訂閱
謝謝 dllee,看來是小弟想太多了 ... 
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-13 15:35:56 IP:61.231.xxx.xxx 未訂閱
引言: 謝謝 dllee,看來是小弟想太多了 ... < face="Verdana, Arial, Helvetica"> 我才應該也謝謝您,因為我還不知道會有這樣的記憶體使用量的差距。 我測試 MyIE2 流覽本站多個網頁的狀況,約需要 18~25MB 的實體記憶體,而當最小化時,只剩 3MB 不到,而當再次回復時,一開始只有 7~8MB ,不過,可以看到它一直變大一直變大,而在切換 MyIE2 其他網頁後,就回到 18~25MB 的水準。 如果可以允許「閃一下」的話,那就以用很短的時間最小化再回復,應該像 MyIE2 一樣可以在一回復時比之前省一些,但時間一久,應該就一樣了。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
China Join
中階會員


發表:81
回覆:242
積分:89
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-13 16:07:10 IP:218.170.xxx.xxx 未訂閱
小弟想這個功能其實是可以應用在常駐程式的如下作法:    先把 FORM 設定成一開始就最小化然後再隱藏最小化視窗    void __fastcall TForm1::ApplicationEvents1Minimize(TObject *Sender) {   ShowWindow(Application->Handle, SW_HIDE);   TrayIcon1->Visible=true; }    這樣就可以省下不少記憶體,如果有用到 FORM 的時候再把他"還原",背景作業時好像也沒有影響處理的速度ㄋ
系統時間:2024-04-29 13:00:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!