1

私は確率論的潜在セマンティック インデックス (plsa) に基づくアルゴリズムを実装しています。論文はここにあり、p_z_d_wt_wv という名前の 4 次元配列が必要です。z はトピック、d はドキュメント、wt はテキスト ワード、wv はビジュアル ワードです。各次元の数は約12、7000、100、500で、配列は二重配列なので、32Gのメモリが必要です!! 以下のようにこのメモリを割り当てます。各ドキュメントの wt と wv の数が異なるため、デモンストレーション用です。

p_z_d_wt_wv = new double[12][7000][][]; 
for( int t = 0; t < 12; ++t) 
{ 
    for( int d = 0; d < 7000; ++d ) 
    { 
        p_z_d_wt_wv[t][d] = new double[100][500];
    } 
}

コードを実行すると、メモリ不足の問題が発生します。まず、コードでメモリが不足するのはなぜですか? 配列が私の方法で割り当てられている場合、メモリは連続して割り当てられますか? javaには連続メモリのメモリ制限があるからでしょうか?もしそうなら、限界は何ですか?

次に、サーバーのメモリが十分に大きいと仮定して、この問題を解決するにはどうすればよいでしょうか。float配列として変更できることはわかっていますが、他に解決策はありますか?

4

2 に答える 2

0

配列が私の方法で割り当てられている場合、メモリは連続して割り当てられますか? javaには連続メモリのメモリ制限があるからでしょうか?もしそうなら、限界は何ですか?

いいえ、JVM は配列にメモリを割り当てることができません。配列に float を使用する場合、最大メモリ ヒープ領域を 16GB に設定する必要があります。file を使用して配列を保存できます。

于 2013-07-11T03:08:35.273 に答える