2010-12-03 8 views
3

私はaplication ...これは今そこから、65.000を記録以下の問題ではありません2007Javaヒープ・スペース例外は、大量のデータ、あらゆるソリューションを備えていますか?

ファイルにアクセスするために、私はOracle Database 11gのから移行しようとしているJavaヒープメモリ とlitle大きな問題をしましたJavaヒープ例外をスローしていますが、メモリ消費量は600m以上、CPU使用率は50%を超えています。

限り私はrset.nextを知っている()(X 65000行50のcolums上)すべてのデータを得ることはありませんが、一部のレコードのx時間 私もフェッチ・サイズを設定しようとしましたが、何も

起こりませんでした私は出力、同じエラーが私のコードを消去して表示してきました
rset.setFetchSize(1000); 

while (rset.next()) { 
if (cont % 5000 == 0) { 
    System.out.println(cont + " proccesed and counting ..."); 
} 
} 

私に-xm使用しての答えを与えないでください(複数可、x)が512、1024、など。 これは私の特定のケースでは解決されませんでした(私はこれをより高いxDに設定するためにtryiedしましたが、何も起こりません、私は

私が試すことができる他のオプションはありますか? meabyはいくつかのドライバ設定や文字列接続を変更していますか? 私の英語

aboubt

は申し訳ありませんが助けてください、これは私の接続です:

Class.forName("oracle.jdbc.driver.OracleDriver"); 
this.conn = DriverManager.getConnection("jdbc:oracle:thin:@" + getServer() + ":1521:orcl", getUser(), getPassword()); 
       this.stmt = this.conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_UPDATABLE); 
+2

エラーメッセージが表示されますか? – OscarRyz

+0

はい時間を待つ – ErVeY

+0

この質問でMS-ACCESSタグは何をしていますか?私はAccessやJet/ACEデータベースエンジンに関して何も見ません。 –

答えて

2

問題は、あなたがスクロール可能なResultSetを使用していて、それがより多くのメモリを使用しようとしていることであるように見えます。

+0

mmmmmmmmmmmmmmそれについてはどうですか???私は結果セットの別のタイプを使用することができますか? – ErVeY

+3

@ErVeY:行ごとに結果セットを処理する場合は、TYPE_SCROLL_INSENSITIVEではなくTYPE_FORWARD_ONLYを使用する必要があります。私は 'TYPE_SCROLL_INSENSITIVE'の実装は、メモリオーバフローにつながるフェッチされた行をキャッシュすることだと思います。(すべてのOracleカーソルはデータベース側で転送されるため、クライアント側はクライアント側のキャッシュを通してスクロール可能な機能を実装する必要があります。 ) –

+0

Thx Vincent私はこの質問をしたので私は世界の接続が解除されているので、私はtheardsに従うことができませんでした。それについてはごめんなさい – ErVeY

関連する問題