作者craftwar (no vista support)
看板WarCraftChat
標題Re: [閒聊] 先關魔獸再關GGC
時間Tue Oct 27 22:01:57 2009
※ 引述《sitos (麥子)》之銘言:
: ※ 引述《craftwar (no vista support)》之銘言:
: : 最近用多開,注意到一個現象
: : 直接關Garena會順便把一個War3關掉 (不知道哪版開始改的)
: : 似乎很方便?
: : 實際上,GGC直接暴力關掉War3 (不使用正常方式結束程式)
: : 這樣做的結果就是,程式結束應該做的釋放資源等動作不會被執行
: : (驗證方式請用message sniffer,看war3不會收到WM_DESTROY就結束
: : 印象中clean up的動作是在WM_DESTROY中做的)
: : 會不會有memory leak,這要看war3是怎麼寫的
: : 像我就很偷懶,MSDN說程式結束會自動釋放的,我就沒手動寫
: : 如果你沒正常結束koala's WC3 helper,我可以告訴你
: : 基本上會有memory leak,某些系統資源會沒機會釋放
: 如果一個程式已經「結束」但是還占用系統資源,應該是 OS 沒寫好吧。
: 至少以 memory 來看的話,不管有沒有 leak ,只要 process 結束,
: 所以分配給它的 page 應該都會釋放掉,這是記在 page table 裡面,
: 沒道理不去把它清一清,不是很懂你所謂某些系統資源沒機會釋放指的是什麼。
這是在MSDN上看過的
某些win32 API會有這現象
例如某些handle開一開沒關就結束,就會有memory leak
因為system的table中有記錄,但是程式被強制結束
OS不知道可以釋放,該entry就被遺忘了
我只記得process handle會有這現象
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.104.229
1F:推 sitos:嗯,那應該算 OS 的 leak 不是 app 的 leak 吧 10/27 23:04
2F:→ craftwar:沒啥差啦,還不都是memory leak 所以程式不要亂terminate 10/27 23:19
3F:→ sitos:反正重開機就好了,現在 mem 那麼便宜,別計較了。 10/28 00:32
4F:推 wulouise:好吧 以後wc3要好好關 10/28 08:44
5F:噓 WCDOLBY: 11/03 17:27
6F:噓 WCDOLBY: 11/03 17:27
7F:噓 WCDOLBY: 11/03 17:27