「見える化」でJavaシステムを診断する
メッセージからは、以下の内容がわかります。

メモリリークとは不要になったオブジェクトが何らかの理由で解放されず、
メモリ領域を無駄に占拠してしまっている状況です。
メモリ不足によるシステムの停止などの深刻な問題を引き起こす場合があるため、早急な対応が必要です。
ENdoSnipeは、Map、List、Set、Queueなどのコレクション要素が増え続ける場合にメモリリークとして検出します。
※ メモリリークの種別については、コチラをご覧ください。


「原因の特定」で問題箇所がわかりました。
No.2で特定したソースコードの内容を確認してください。
この場合は、examples.jsf.logic.impl.EmployeeLogicImpl.javeの710行目を確認します。
メモリリークが発生した場合は、以下のような傾向を示すことがあります。
BottleneckEyeのグラフ画面で確認してください。
| グラフ画面 | グラフ | 確認内容 |
| CPU/メモリ | CPU使用率(プロセス) | CPU負荷があがるため、CPU使用率が高くなります。 |
| ヒープメモリ使用量 | メモリ使用量が高くなります。 | |
| VM状態 | GC停止時間 | 頻繁にGCを行うため、停止時間が長くなります。 |
| VMスループット | 処理に時間がかかるため、VMスループットが低下します。 | |
| レスポンス-Web | レスポンス時間(最大値) | 処理時間が長くなります。 |
ENdoSnipeは、Map、List、Set、Queueなどのコレクション要素が増え続ける場合にメモリリークとして検出します。
ENdoSnipeでメモリリークを検出したい場合は、以下の通り設定してください。
設定変更は、Javelinの設定ファイル(javelin.properties)または、BottleneckEyeのコントロール画面から
行うことができます。
| No. | プロパティ | 設定値 | 概要 |
| 1 | javelin.leak.collection.monitor | true | Collectionのメモリリーク検出を行うかどうかを設定します。 |
| 2 | javelin.leak.collectionSizeThreshold | 任意 | メモリリークとして検出するCollection、Mapのサイズの閾値を設定します。初期値は50000です。 |
| 3 | javelin.leak.collectionSizeOut | true | メモリリークを起こしたCollection、Mapのオブジェクトサイズを出力するかどうかを設定します。 |
メモリリークに関する参考ページです。ご覧ください。
ENdoSnipe:メモリリーク検出機能Vol.005 プログラムのメモリリーク発生箇所を特定する方法 第1回
Vol.006 プログラムのメモリリーク発生箇所を特定する方法 第2回
Vol.007 メモリを大量確保しないアプリケーションでOutOfMemoryErrorが発生