biz-Streamマニュアル よくあるご質問(FAQ) PDF出力 PDF生成時のbiz-Streamのメモリ使用量の指標を教えてください。

QPDF生成時のbiz-Streamのメモリ使用量の指標を教えてください。

A回答

1.biz-Streamのメモリ使用

biz-Streamでは、帳票を高速に出力するため、PDF生成に必要なデータを一旦メモリ上にすべて保持いたします。
メモリの解放は flush() や close() を実行するタイミングで行います。
また、メモリ使用量や処理時間は、帳票のレイアウト及び利用環境により大きく異なるため、単純にPDFの出力ページ数等から必要なメモリの指標値を算出することができません。
最適なヒープメモリの設定値については、お客様環境の実際のレイアウトにて検証を行って算出していただくようお願いいたします。 OutOfMemoryError が発生する場合は、Javaオプションにてヒープメモリの設定値をチューニングしてください。

2.メモリ使用量を増加させる要因

具体的な例を以下にご案内いたします。

  1. 帳票の複雑度
    帳票デザインをXMLにて記載しているため、PDF生成時にはこのXMLをメモリ上に展開・解析します。 構造上入れ子及び上位の属性の継承等が可能のため、XML的な階層が深くなるほどメモリ使用量やCPU使用量が多くなり処理時間もかかります。
  2. 画像ファイルの有無
    画像の埋め込み等を行う場合、画像ファイルをPDF形式に展開するため、その処理上でメモリを使います。 高精細・ファイルサイズが大きい画像を利用する場合そのファイルサイズプラス変換したサイズ分のメモリが使用され、処理時間の増加に繋がります。 但し、TIFF画像は専用のタグを使用することで、変換を行わず、PDFにそのまま埋め込むことができます。
  3. データソース
    RDB/CSV/アプリケーションから直接データを設定することが可能ですが、biz-Streamではこのデータをいったんすべてメモリ上に保持します。 このため大量のデータを利用される場合には、そのデータ分メモリが必要になります。 あまりに大量のデータを利用される場合には、データを分割する等によりメモリ使用量を減らすことで結果高速に帳票生成が可能なケースもあります。
  4. 同時実行の多重度
    通常のWebアプリケーション等と同様に、同時実行の多重度等により処理時間が増加する事もあります。