0

私のアプリでは、いくつかの値を入力した後、編集可能な PDF ファイルを開く必要があります。値を設定するために、 LibraryPdfReaderの , PdfStamper&AcroFieldsクラスを使用します。iTextPDF値を入力した後、これらすべてのオブジェクトを null にします。

PDF ファイルはQoppa Library、PDFDocument、QPDFNotesView などのクラスを使用するアクティビティで表示されます。アプリで使用されるヒープ サイズは、PDF を開くまで一貫しています。初めて PDF を開いた後、ヒープ サイズが非常に大きくなります。2 回目以降、ヒープ サイズは徐々に増加しますが、わずかに増加します。PDF を 3 ~ 4 回連続して開くと、原因でアプリがクラッシュしjava.lang.OutOfMemoryErrorます。

PDF を 1 回だけ開いた場合、次にアプリを実行するまでヒープ サイズはその高い時点で同じままです。そのアクティビティを終了すると、上記のクラスのすべてのオブジェクトが無効になります。

問題はこれです:

これらのオブジェクトを使用すると、使用後に無効化しても、ヒープ サイズは決して減少しません。

私はitextpdf-5.1.3.jarandqoppapdf.jarをプライベート ライブラリとして使用しています。誰でもこれを解決するのを手伝ってもらえますか? 事前にどうもありがとう...

4

1 に答える 1

0

QPDFNotesView クラスの releaseDocument() メソッドを呼び出した後、メモリの解放がかなり進行しています。

オブジェクトがありました

    QPDFNotesView viewer = new QPDFNotesView(this);

最終的に使用した後にこのメソッドを呼び出しました

    viewer.releaseDocument();

これにより、私の問題は大幅に解決されました。

于 2013-10-28T12:44:39.563 に答える