2016-09-03 2 views
0

3GBサイズの2つのCSVファイルを比較しようとしています。 CSVマップreader.canでこれらのファイルを読み込もうとしているときに、Javaヒープメモリエラーが発生しました。誰でもこの問題を解決するのを手伝ってください。大きなCSVファイルを読み取っているときにJavaのメモリが不足しているというメッセージ

+2

あなたのコード – Daniel

+0

を入力してください:たとえば、あなたが実行しますヒープサイズは、プログラムを実行しているときに512メガバイトで実行を開始したい場合コンテンツを格納するのに十分なメモリがない場合、エラーが発生することがあります。一度に1行ずつ各ファイルを読んで比較するプログラムを書くことを試みましたか?ファイルから1行を格納し、その内容のために他のファイル全体を検索するために書き込むことができますか? – D3181

答えて

1

1つのオプションは、ヒープのメモリを拡張することです。初期ヒープサイズはデフォルトで128メガバイトです。 Javaには、この値を増やすために渡すことができるフラグがあります。

ヒープサイズを-Xms [size]で初期化することも、JVMに-Xmx [size]で最大ヒープサイズを与えることもできます。

あなたの場合は、プログラムにメモリを増やすために-Xmsを使用します。あなたはCSVの内容全体を読んでいる場合は、一度、メモリにファイルを

java -Xms512m programName 
+0

ヒープは、32ビットWindows版を実行していない限り、デフォルトでメインメモリの1/4です。 3GBのファイルを処理する必要がある場合は、おそらく2〜4倍の量のこのヒープを一度にロードする必要があります。 –

関連する問題