BGA2的第二波Beta, 新增部分戰役模式和一堆其他新的系統!
新的beta似乎有memory leak的問題, 所以會定時爆炸
______________
喜歡這個頻道的節目嗎?
考慮訂閱吧! 每個訂閱對我都是非常大的鼓勵
另外, 有鑑於一些人提到他們比較喜歡在Twitch上看實況所以Twitch也會有同步直播歡迎參考:
https://www.twitch.tv/pedro0930
「memory leak中文」的推薦目錄:
- 關於memory leak中文 在 BrotherPedro Youtube 的精選貼文
- 關於memory leak中文 在 BrotherPedro Youtube 的最佳貼文
- 關於memory leak中文 在 [轉錄]關於memory leak 的幾個tip - 看板SFFamily 的評價
- 關於memory leak中文 在 [ Memory leak & Smart Pointer ]... - 台大電機程式訓練班 的評價
- 關於memory leak中文 在 網站常見Memory Leak: 循環參照、事件循環監聽、存取全域變數 的評價
- 關於memory leak中文 在 bytedance/memory-leak-detector - GitHub 的評價
memory leak中文 在 BrotherPedro Youtube 的最佳貼文
1:12:58 改玩多人
1:22:30 蟲子 vs 機械神教
1:41:19 射擊蟲子 vs Craftworld Eldar
2:02:38 Ork vs Necron
2:27:42 Tau vs Imperial Navy
2:55:48 更多蟲子 vs Dark Eldar以及蟲子vs蟲子
BGA2的第二波Beta, 新增部分戰役模式和一堆其他新的系統!
新的beta似乎有memory leak的問題, 所以會定時爆炸
______________
喜歡這個頻道的節目嗎?
考慮訂閱吧! 每個訂閱對我都是非常大的鼓勵
另外, 有鑑於一些人提到他們比較喜歡在Twitch上看實況所以Twitch也會有同步直播歡迎參考:
https://www.twitch.tv/pedro0930
memory leak中文 在 [ Memory leak & Smart Pointer ]... - 台大電機程式訓練班 的推薦與評價
[ Memory leak & Smart Pointer ] 今天上課時,我們談到了Array(陣列)和Pointer(指標)的用法也提到了為甚麼需要、以及如何利用new來動態宣告陣列那 ... ... <看更多>
memory leak中文 在 網站常見Memory Leak: 循環參照、事件循環監聽、存取全域變數 的推薦與評價
記憶體流失(Memory Leak)的原因是在程式撰寫上的常見錯誤,當使用無內建垃圾回收機制的語言,更容易因為疏忽造成記憶體無法釋放被再次使用的結果, ... ... <看更多>
memory leak中文 在 [轉錄]關於memory leak 的幾個tip - 看板SFFamily 的推薦與評價
※ [本文轉錄自 java 看板]
作者: willieliao (Willie Liao) 看板: java
標題: Re: [問題] 請教在linux跑的java錯誤訊息
時間: Thu Dec 27 13:53:23 2007
※ 引述《willieliao (Willie Liao)》之銘言:
: 你的程式有memory leak,也就是說程式跑越久memory就越用越多,
: 而且garbage collection之後也不會下降,最後就是出現outofmemory exception
: 這種情況短期治標是加大memory(-Xmx多少m),長期治本當然是要看哪裡有memory
: leak,也就是物件越漲越大,reference的物件越來越多,而沒有從memory中releas
: e掉。雖然java 有garbage collection,但是有reference到的物件是不會被collect的
....
: 推 dwi2:推一下這篇!我之前也有遇過這種問題 11/24 20:18
: 推 slalala:不知道可否請您分享 讓新手注意如何建少記體用量的技巧呢? 11/24 22:53
: → slalala:因為我寫的批次處理的程式 都還是會使記憶體用量偏大 11/24 22:55
: → slalala:除非縮視窗才會釋放些空間應該有些地方觀念上寫的不夠嚴謹 11/24 22:56
不好意思回一下有點久的文章,因為我現在才看到有人推文問問題。一般沒有寫過
c++直接寫java的新手因為沒有destroy object的觀念,特別容易造成memory leak
首先我要強力推薦使用profiler,我們公司是用要付費的borland,不過免費的
jconsole(附在jdk1.5以上,到jdk_home/bin找jconsole.exe)更好用,而且有
強大的find thread deadlock功能(大感謝!讓我少死很多腦細胞)。
如果你找不出來哪裡有memory leak的話,讓程式run一段時間用profiler去監視
哪種class的instance數量一直上升不下降,那就有可能是來源。
回到程式本身,一些小技巧如下:
第一,絕對不要寫出無限迴圈!即使是有限迴圈,也要盡量減少跑的次數。
public int getThis() {
return this.getThis();
}
以上的程式編譯會過,但是一跑保證不到一秒就會出現stackoverflowerror。
第二,盡量不要保留intermediate(過渡)的物件
最耗記憶體的寫法:
public void writeXML(FileWriter writer) {
Vector tempV = new Vector();
tempV.add("<root>");
for (int i = 0; i < 10000; i++) {
tempV.add("<value> + String.valueOf(i) + "</value>");
}
tempV.add("</root>");
for (int j = 0; j < tempV.size(), j++) {
writer.write(tempV.get(j)); //這裡不需要cast
}
writer.close();
}
這個call會暫存10002個string objects..
有點sense的寫法:
public void writeXML(FileWriter writer) {
StringBuffer sb = new StringBuffer();
sb.append("<root>");
for (int i = 0; i < 10000; i++) {
sb.append("<value>" + String.valueOf(i) + "</value>");
}
sb.append("</root>");
writer.write(sb.toString());
writer.close();
}
這個寫法只會有一個stringbuffer的instance,但是這個instance會很大。
最省記憶體的寫法
public void writeXML(FileWriter writer) {
writer.write("<root>");
for (int i = 0; i < 10000; i++) {
writer.write("<value>" + String.valueOf(i) + "</value>");
}
writer.write("</root>");
writer.close();
}
一邊生成一邊寫出最省記憶體..
第三,不需要的物件要清掉,也就是把本來指向這個物件的variable
指向null
private HashMap tempHashMap = new HashMap();
public void doSomething() {
for (int i = 0; i < 100000; i++) {
tempHashMap.put(new Object(), new Object());
}
...
}
這個doSomething()假設你call他1000次,程式還是會執行無誤。但是,你的
tempHashMap就會長大成1000倍,不但變慢還會memory leak。
解決之道要嗎把變數搬進method裡,要嗎像這樣:
public void doSomething() {
for (int i = 0; i < 100000; i++) {
tempHashMap.put(new Object(), new Object());
}
...
tempHashMap.clear();
}
或是
private HashMap tempHashMap;
public void doSomething() {
tempHashMap = new HashMap();
for (int i = 0; i < 100000; i++) {
tempHashMap.put(new Object(), new Object());
}
...
tempHashMap = null;
}
這兩種方法的的效果其實差不多,不過後者更省記憶體一點。壞處是有的時候不小心
null pointer就會跑出來。
最後,盡量避免一些java中memory intensive的api calls。
這個的話真的要靠經驗。比方說,java的regular expression和 JAXP(java API
for xml)裡面都有很多吃memory的怪獸(美國這邊我們叫它memory hog)。碰到的
話也只好用profiler找出來在想辦法避開了。
大概就想到這麼多吧,板上的神人大大門不要客氣盡量鞭...
Willie
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 76.111.69.123
--
三月的柳絮不飛 妳的心如小小的寂寞的城
我達達的馬蹄是美麗的錯誤 我不是歸人 我是馬~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.117.169
... <看更多>