2017-09-29 37 views
1

Apache POIを使用してノート文書をexcel(xlsm)にエクスポートするエージェントがあります。私は、recycle()を使用してオブジェクトを設定するか、ヌルにオブジェクトを設定することによってメモリを解放する可能性のあるすべての方法に従っています。しかし、JVMはまだヒープサイズを使い果たし、 "メモリ不足"エラーをスローします。エラーが来てどのように頻繁3.17 Domino JVMメモリとPOI

  • - ここではいくつかの詳細は、

    • デフォルトヒープサイズ= 256メガバイト
    • POIのバージョンはありますか?エージェントをWebから5〜6回連続して実行した場合。
    • XLSMのテンプレートサイズ:書き込みレコードの
    • 数90キロバイト -

    もう一つ私が観察していなことが、理解することができませんでし10-30は、JVMのメモリを解放する/使用方法です。例えば、私はコードを開始する前に、コードは次のコードを使用して終了した後、「利用可能」のメモリを、印刷しています私は私の薬のようにそれが印刷物に非常に最初の時間をテスト

    Runtime runtime = Runtime.getRuntime(); 
    double usedMemory = usedMemory(runtime); 
    
    System.out.println("START - Initial memory :: " + String.valueOf(usedMemory)) 
    
    static double usedMemory(Runtime runtime) { 
         long totalMemory = runtime.totalMemory(); 
         long freeMemory = runtime.freeMemory(); 
         double usedMemory = (double)(totalMemory - freeMemory)/(double)(1024 * 1024); 
         return usedMemory; 
        } 
    

    JVM START:可能な初期メモリー:60メガバイト

    JVMのEND:使用メモリ:エージェントが起動したときに、それが印刷さ90メガバイト

    第二に、時間、

    JVM START:利用できる初期メモリ:130メガバイト

    JVMのEND:使用メモリ:160メガバイト

    私は、コードの末尾にメモリを解放していたとしても、私はそれはdoesnの参照最初のメモリ(60 MB)まで下がっていませんか?

     /* Free up memory */ 
         webDoc.recycle(); 
         docA.recycle(); 
         vwLookup.recycle(); 
         curDb.recycle(); 
         session.recycle(); 
    
         agentContext=null; 
    
         fpath.delete(); 
         xlFile.delete(); 
    
         runtime = Runtime.getRuntime(); 
         usedMemory = usedMemory(runtime); 
    
         System.out.println("END - MAIN :: Total used memory: " + String.valueOf(usedMemory)); 
    
         freeMemory(); 
    
  • +0

    POIの瓶はどこに置いたのですか?データベース内またはドミノサーバーのファイルシステム内にありますか? –

    +0

    私は、データベースに配置している、ファイルシステムに配置されている場合、サーバー上のアプリケーションを配布するのは難しいです。さらに、私は管理者の依存関係を望まない。 – Rishi

    答えて

    1

    昨年、この問題に関するPMRを公開しました。 IBMの答えは以下の通りです:

    これは、エージェントまたはスクリプト・ライブラリーに添付されたjarファイルの既知の制限であることを通知します。

    SPR#BHUY8VML6R:「お客様はJARファイルをデータベースにエージェントに接続されている場合のみ、継続的なメモリリークが発生している」

    SPR#BHUY8PRMKK:「Javaのメモリリーク問題を報告したSPRの一部の下を参照してください。 「エージェントライブラリまたはスクリプトライブラリに添付Jarファイルを使用する場合」を参照してください。

    SPR#JSHN83MMMW:「添付JARファイルとJavaエージェントでメモリリーク」

    次のように使用可能な唯一の回避策はあります。JavaエージェントのプロジェクトからJARファイルを削除し、JVM/libに配置します/ EXTフォルダまたはnotes.iniのパラメータJavaUserClassesでそれを参照。」

    私はそれはあなたが聞きたい何それはないと知っている...しかし、論文は、可能な限りそれ以来、私はOSGiのプラグインを使用しています。事実です。

    関連する問題