2017-08-18 7 views
2

私はjava.lang.OutOfMemoryError: Java heap spaceに多くの質問があります。 question 1java.lang.OutOfMemoryErrorを解決する方法:ヒープメモリサイズを増やさずにJavaヒープスペース

よう

しかし、リンクのどれも私の質問に対して適切な答えではありませんありません。

私たちは、巨大なデータがデータベース側から来るスプレッドシート形式のレポートを生成しています。ヒープメモリサイズを2 GBから4 GBに増やしました。使用しません。

メソッドを使用してgetterssettersをすべてトリムしましたが、これも使用しません。例については

String s = "Hai  "; 
s.trim(); 

いずれかがヒープ領域のサイズを大きくすることなく、Javaコーディング側からこの問題を解決する方法を持つならば。クライアントはヒープスペースを増やさないと言いました。例外

private CrossTabResult mergeAllListsSameNdc(CrossTabResult crt, CrossTabResult res) { 

     crt.setFormularyTier(crt.getFormularyTier()==null ? "":((crt.getFormularyTier().contains(crt.getListId())? crt.getFormularyTier(): crt.getListId()+crt.getFormularyTier()) +"~"+res.getListId()+res.getFormularyTier())); 
     crt.setFormularyTierDesc(crt.getFormularyTierDesc()==null ? "":((crt.getFormularyTierDesc().contains(crt.getListId())? crt.getFormularyTierDesc(): crt.getListId()+crt.getFormularyTierDesc()) +"~"+res.getListId()+res.getFormularyTierDesc()));} 

を取得し、このメソッドを呼び出すと、機密のために多くのコードを共有することはできません

。上記のコードを見ることで、人々に代替ソリューションがある場合は、私に知らせることを意味します。我々は、同じidに基づいて2つのStringをマージしています。使用例この種の

+1

さらにコードを提供できますか? – notanormie

+2

データをバッチで表示してください。この問題を経験するには、データベースからアプリケーションサーバーまで、すべてのデータをワンショットで取得する必要があります。 – alexd

+0

@notanormieサンプルコードで質問を編集しました。 –

答えて

2

We are generating reports in spreadsheet format, where huge data is coming from database side.

、あなたはそれが消費するメモリを改善するかもしれませんが、まず、あなたが犯人を特定する必要が勉強するには、少なくとも2つのものを持っています。このユースケースのツールを監視することにより、識別

主な原因は、一般的に以下のとおりです。

1)DBからロードされたデータがメモリの大きな消費者として特定された場合は、おそらく1つのショット内のすべてのデータをロードするべきではありません。
これらのオブジェクトをすべてメモリに保存し、同時にこれらのデータからスプレッドシートを作成すると、多くのメモリが消費される可能性があります。
アプリケーションが他のユースケースに対して並列に使用されている場合、全体的に いくつかの検索で検索を分割する必要があります。
次に、オブジェクトを取得し、スプレッドシートにデータを取り込み、これらのオブジェクトを必要なくなるまで解放します。など...

2)スプレッドシートの作成中に、ライブラリで作成されたオブジェクトスプレッドシートが大きなメモリ消費者であると判断された場合、メモリ内のスプレッドシート全体。
たとえば、POIはDOMのようなAPI:XSSFとストリーミングAPI:SXSSFを提供します。
スプレッドシートの作成にライブラリの使用を指定しませんが、使用するロジックが誰にでも同じである必要があるため、重要ではありません。

+0

私は最初の点に同意します。しかし、コードは現在生産レベルに移行しました。データ構造を正しく変更することはできません。 –

+2

@ArvindKatte、もしあなたが何も変更しないなら、何も修正されません。 –

+0

今日、私たちはクライアントと話をしていますが、どのようなアプローチが崩れるかを見てみましょう。 –

関連する問題