Re: [問題] 請問不使用緩衝讀取,和用大量物件儲存數據的缺點?
我剛開始學習Java的時候,
為了處理一個資料分析問題,
把所有的資料放在單機版運算,
大約存放500萬筆資料,
大約用了20G的Ram。
那時候是一個初學者,
每一個物件裡面,所包的變數都是資料容器類別,
字串也是直接使用String.
一個變數就占用了很多記憶體。
大概就是這樣寫吧。
public class DTO{
public ArrayList<String> A=new ArrayList<>();
public TreeMap<String,String> B=new ArrayList<>();
....都利用資料容器類別....
}
後來在公司前輩的指導下,
大幅改變了寫作的習慣,
資料的變數表達,盡可能空間的使用上精簡。
例如可以用簡單的array的地方,那就估算可能的值,
不要用到ArrayList<>這種物件,
String能用char來處理,也可以用char來處理。
還有就是學會單例模式,
能夠呼叫一次的,就呼叫一次,不要每一次呼叫都要生一個。
public class A{
private A Instance=null;
public static getInstance(){
if(A==null){
Instance=new A();
}
return Instance;
}
....
}
大概改成這樣之後,
記憶體的空間就降低很多,2-3G就可以跑完。
也知道好的程式和壞的程式的差別就在這裡。
70萬筆資料,以我過往經驗,應該不會超過2G。
以上的小小經驗,給各位做一個參考,
是以前學Java的心得。
※ 引述《baconcsie (Bacon)》之銘言:
: read load,如果不使用緩衝區,除了因為直接硬碟讀寫,可能比較慢之外
: 還會有什麼缺點嗎?
: 還有就是,最近在算數據時,都會先把數據大量讀入程式,理論上就是先放入了RAM
: 這樣在運算數據時會比較快,每筆數據我用一個物件儲存,物件中約有10來個變數,
: 總共會有30萬~75萬個物件。
: 可是RAM好容易就爆掉,不知道是真的數據太大,還是我程式的缺陷,還是java的缺陷。
: 大家有任何的建議嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.85.182.195
※ 文章網址: http://www.ptt.cc/bbs/java/M.1409451281.A.D2A.html
※ 編輯: chen1025 (219.85.182.195), 08/31/2014 10:29:15
→
08/31 15:31, , 1F
08/31 15:31, 1F
→
08/31 15:31, , 2F
08/31 15:31, 2F
→
08/31 15:31, , 3F
08/31 15:31, 3F
→
08/31 16:27, , 4F
08/31 16:27, 4F
→
08/31 16:30, , 5F
08/31 16:30, 5F
→
08/31 16:55, , 6F
08/31 16:55, 6F
推
09/01 06:12, , 7F
09/01 06:12, 7F
推
09/01 06:25, , 8F
09/01 06:25, 8F
→
09/01 07:59, , 9F
09/01 07:59, 9F
→
09/06 12:07, , 10F
09/06 12:07, 10F
→
09/06 15:26, , 11F
09/06 15:26, 11F
→
09/06 15:27, , 12F
09/06 15:27, 12F
→
09/06 15:27, , 13F
09/06 15:27, 13F
→
09/07 21:08, , 14F
09/07 21:08, 14F
→
09/07 21:08, , 15F
09/07 21:08, 15F
→
09/07 21:08, , 16F
09/07 21:08, 16F
→
09/07 21:09, , 17F
09/07 21:09, 17F
→
09/07 21:10, , 18F
09/07 21:10, 18F
→
09/07 21:23, , 19F
09/07 21:23, 19F
→
09/07 21:23, , 20F
09/07 21:23, 20F
→
09/07 21:24, , 21F
09/07 21:24, 21F
→
09/07 21:25, , 22F
09/07 21:25, 22F
→
09/07 21:25, , 23F
09/07 21:25, 23F
→
09/07 21:26, , 24F
09/07 21:26, 24F
→
09/07 21:26, , 25F
09/07 21:26, 25F
→
09/07 21:26, , 26F
09/07 21:26, 26F
→
09/07 21:26, , 27F
09/07 21:26, 27F
→
09/07 21:27, , 28F
09/07 21:27, 28F
→
09/07 21:27, , 29F
09/07 21:27, 29F
→
09/07 21:28, , 30F
09/07 21:28, 30F
→
09/09 18:05, , 31F
09/09 18:05, 31F
推
09/12 06:04, , 32F
09/12 06:04, 32F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章