Re: [問題] 陣列問題
dear 各位
今天做了一點測試
以下是我的一小部分code
====================================
main(){
//處理fasta資料並儲存相關變數
fastareadin("train0520086rank.fa");
//處理class value
class_value_handle();
freq_array=new int[(int)k+1][(int)Math.pow(4, mer)+1];
//trans_array=new int[(int)k+1][(int)Math.pow(4, mer)+1];
//u_y=new int[class_value_allcount+1];
//Pr_jy=new double[(int)Math.pow(4, mer)+1][class_value_allcount+1];
//entropy=new double[(int)Math.pow(4, mer)+1];
}
=========================================================
我的問題主要是做完fastareadin()和class_value_handle()這兩件function後
前者是做將資料讀入 後者是計算資料的類別值之類動作
會大量宣告以下五個array
分別是freq_array, trans_array, u_y, Pr_jy, entropy
現在我先把後面四個陣列宣告先註解掉
先看freq_array這個陣列
首先k值是從fastareadin()這個function得到
以此例子來說 k會等於5000
而mer值是我設定的 例如當我設定mer=8
所以 freq_array=new int[5000][65536+1]; (因為4^8=65536)
這時候eclipse就會出現
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
的error
也就是說我的main裡面只執行這幾行就會出現這error
所以明顯錯誤是因為freq_array的無法宣告...
而我的eclipse有設定memory的參數
-Xmx1024M
加到最大了..加不上去了..= =
請問我的問題有辦法解決嗎...
我自己的爛方法是宣告多個陣列再合起來
老師的建議是
將所有資料都寫在file 也就是不要宣告陣列...
但我還是想宣告陣列啊....因為code都寫好了
mer=1~10 只有當mer=8,9,10才會出問題..........
謝謝!!!
※ 引述《tkcn (小安)》之銘言:
: ※ 引述《tstanly ()》之銘言:
: : 請問一下
: : 如果我的陣列需要太大
: : 導致eclipse會顯示超過memory heap size
: : 我增加eclipse的記憶體參數 加到最大了
: : 還是會產生這個問題
: : private int[] test=new int[N];
: : 其中N最大到
: : N=4^9=262144
: : 遇到這種情形該怎麼解決...? 謝謝
: int: 4 byte
: 這樣也才 1 mb 而已,
: 就算沒設 -Xmx 直接用預設值跑應該也沒問題吧?
: 應該要檢查一下程式其他部份。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.133.98
推
01/16 02:16, , 1F
01/16 02:16, 1F
推
01/16 02:20, , 2F
01/16 02:20, 2F
→
01/16 02:22, , 3F
01/16 02:22, 3F
推
01/16 02:24, , 4F
01/16 02:24, 4F
推
01/26 09:31, , 5F
01/26 09:31, 5F
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章