0

HPアプリケーションのQualityCenterに接続するために使用しています。大きなアプリケーションを実行すると、メモリが増えすぎますが、減りません。アプリケーションがクラッシュしました。誰かが解決策を持っていますか?

ありがとう

4

1 に答える 1

0

メモリが不足している場合は、最初にメモリを使用しているものを特定する必要があります。次に、それがまだ存在する必要があるかどうかを確認し、そうでない場合はなぜまだ存在するのかを調べます。

このブログで説明されているように、jmap を使用してヒープ ダンプを取得することをお勧めします。ヒープ ダンプは、現在メモリ内にあるすべてのダンプであるため、少なくとも VM に割り当てられたメモリの量と同じ大きさのファイルを用意してください。

ヒープ ダンプを取得したら、Eclipse Memory Analyzerで分析できます。これにより、メモリの最大使用量が何であるかがわかり、ガベージ コレクションを妨げている参照のチェーンを上下にたどることができます。

現在、これはすべて純粋な Java のものであるため、問題が com4j のネイティブ コンポーネントまたは com オブジェクト自体にある場合、これは役に立ちませんが、調査から Java 側を除外することができます。com コンポーネントでメモリ リークが発生している場合は、Java 側なしで実行してみて、メモリ リークを単独で再現できるかどうかを確認してください。その時点で、今説明した手法と同等のネイティブ/COM が必要になりますが、残念ながら私はそれについて何も知りません。

于 2012-09-15T04:21:35.970 に答える