メモリー使用の理解

メモリー・リークをデバッグするには、メモリー問題を引き起こす可能性があるメカニズム、JVM が LE HEAP を使用する方法、JVM が z/OS® 仮想ストレージを使用する方法、および java.lang.OutOfMemoryError 例外の考えられる原因を理解する必要があります。

Java™ プロセスでは、以下のメカニズムによってメモリー問題が発生する可能性があります。
  • LE HEAP の使用量を増やすネイティブ (C/C++) メモリー・リーク (31 ビット VM のみ)。 これは、Subpool2、Key 8 またはストレージの過剰使用、およびプロセス・アドレス・スペースの過剰な作業セット・サイズとして表れます。
  • Java 管理ヒープ内の Java オブジェクト・リーク。 このリークの原因は、アプリケーションまたはミドルウェアのプログラミング・エラーです。 これらのオブジェクト・リークにより、ガーベッジ・コレクション・サイクルの 完了後も残されたままの存続データ量が増えます。
  • Java ヒープ・サイズが正しくありません。 例えば、アプリケーションで必要とされるストレージの量に対してヒープ・サイズが小さすぎることが考えられます。 しかし、ヒープ・サイズが大きすぎると、ネイティブ・スレッド・スタックなど他のコンポーネントのためのMVSプライベート・エリア・ストレージが不足する可能性がある。 -Xmx オプションを使用して、ご使用のアプリケーションや環境に合わせてヒープ・サイズを最適化してください。
  • ストレージ域の割り振り不足。 例えば、REGION、MEMLIMIT、または MAXTHREADS パラメーターの設定が低すぎる場合や、ストレージ域が他の製品 ( IBM® CICS®など) のストレージ域と競合している場合などです。