[轉貼][討論]WAR3的記憶體釋放,到底是怎麼釋放的?

各類的進階專題研究、WE Bug討論等。

版主: crassorz, tv580025

[轉貼][討論]WAR3的記憶體釋放,到底是怎麼釋放的?

文章tv580025 » 2010年03月01日 4:22 am

原討論串:http://bbs.islga.org/read.php?tid=32126

麦德三世 寫:1]handle值和記憶體位址完全是不同的。

2]就像eff說的那樣,war3基本上用的是記憶體複用機制,handle表也用的是表位複用機制。并不是說移除了單位后war3的記憶體使用減少了,而是你移除單位后再建立新單位的時候不會再無謂地增加記憶體而已。



你們也別覺得銷毀物件的動作沒用。建立1000個單位然后一次性移除,跟每建立一個單位然后移除,重複1000次,結果是完全不一樣的。后者理想狀況下只會增一個單位的記憶體(當然實際肯定會更多)。

否則GA何必這么多年來推行“隨時注意記憶體泄露”的JASS程式設計風格。銷毀物件的目的是“防止記憶體泄露”,而不是“減少war3目前的記憶體使用”。請注意兩者區別。

來源:http://bbs.islga.org/read.php?tid=32126#390633


Renee 寫:另外提一點。

記憶體泄露造成的“卡”現象,并不僅僅是所謂的“war3記憶體使用過多”而導致的。

另一個原因是,handle表本身積累得過于龐大,大大影響了jass通過handle表搜索到物件的時間。因此set null排除的那區區一個表位的記憶體泄露,也是非常重要的。

來源:http://bbs.islga.org/read.php?tid=32126#390641


結論:

Handle值與自訂變數使用量越低越好...

因為只要向系統申請記憶體使用之後...

WAR3要等到程式退出之後才會釋放...

即使做了清空的動作,他依然吃了系統的資源ˊˇˋ
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [轉貼][討論]WAR3的記憶體釋放,到底是怎麼釋放的?

文章HeartStation » 2010年03月01日 11:46 pm

所以說每場遊戲結束以後都要重啟WAR3才是最好的選擇!

是這個意思嗎?
小箱子比起大箱子裝著更多的幸福。

知足才能常樂。


http://www.wretch.cc/blog/despairLrA
頭像
HeartStation
士兵
士兵
 
文章: 108
註冊時間: 2008年04月09日 10:36 am
來自: 黑洞

Re: [轉貼][討論]WAR3的記憶體釋放,到底是怎麼釋放的?

文章tv580025 » 2010年03月02日 12:06 am

HeartStation 寫:所以說每場遊戲結束以後都要重啟WAR3才是最好的選擇!

是這個意思嗎?

也可以這麼說

不過要是每張地圖的記憶體洩漏都有徹底解決

那麼根據重複使用申請過的記憶體的這點看來

即使沒有重新啟動遊戲程式也不會有什麼問題
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix


回到 專題討論區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron