-1

私は新しいソフトウェア開発者で、本当に助けが必要です。FOP を使用して、データベース内のデータから PDF を生成するタスクが与えられました。私はプログラムを書きましたが、すべての状況で機能するわけではありません。取得するデータの行数がかなり少ない場合 (最大で 10000 行未満)、すべてが機能します。10000 行を超えるデータセットのレポートを生成しようとすると、メモリ不足エラー (Java ヒープ領域) が発生します。

データベースから読み取るコード:

while (rs.next()) {
   EMP_ID = rs.getString("EMP_ID");
   EMP_NAME = rs.getString("EMP_NAME");
   EMP_SALARY = rs.getString("EMP_SALARY");
   EMP_PROJECT = rs.getString("EMP_PROJECT");
   EMP_POSITION = rs.getString("EMP_POSITION");
   team.addMember(d.DataGetSet(EMP_ID, EMP_NAME, EMP_SALARY, EMP_PROJECT,
         EMP_POSITION));
}

プログラムのメモリを 2GB に増やしましたが、それでもエラーが発生します。この問題を回避するための助けをいただければ幸いです。

4

1 に答える 1

1

メモリが不足していて、どこから始めればよいかわからない場合は、適切な領域に導くための分割統治アプローチをお勧めします。たとえば、PDF を作成するコードをコメントアウトしてから、もう一度テストします。メモリが不足していますか?その場合は、配列に追加する部分をコメントアウトして (ただし への呼び出しはそのままにしてd.DataGetSet)、再度テストします。これにより、Java メモリのプロファイリング方法を学習しなくても (独自の学習曲線があります)、どこを攻撃すべきかを知ることができます。

それでも問題が解決しない場合は、JVisualVM (JDK の一部) を使用してみてください。実行中のアプリケーションに接続し、「ヒープ ダンプ」を実行します。これは、非常に多くのメモリにかかっているものを見つけるのに役立つ場合があります。

最後に、メモリを増やして効果がありましたか? 再確認です。

于 2012-05-02T09:41:54.437 に答える