Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

OutOfMemory(メモリリークの特定)について

新参です。参ってます。教えてください。
現在稼働中システムで不定期(週1程度)にOutOfMemoryが発生します。

Tomcatのログを見ると定期的にGCは行われてるのですが解放されないインスタンスがあるようで除々にメモリを食いつぶしていっています。

調べたところよくあるミスとしてはstatic変数に大きすぎるインスタンスを格納していたり、JVM引数の設定(-Xmx等)のし忘れなど聞きますがそのような点はないようです。

長くなりましたが要はメモリリーク箇所を特定したい訳です。現在JMeterで負荷を掛けながらNetBeans6.0.1のプロファイラを使用してます。ですが未だに原因を特定出来ずにおります。

このような経験者というか有識者の方おりましたら
アプローチ方法等のみでも構いませんので
ご教授頂けないでしょうか。

長くなりすみません。宜しくお願い致します。

3

回答

4239

閲覧

3件の回答

評価

0

仕事でやってるなら、
マルチポストは辞めて下さい。

評価

0

頼むとこに頼めば結構な金を取られる話だよ、それは。
ネットを、便利なヘルパーだとはあまり思わないほうがいいと思われ。

評価

0

(1) static やスレッドローカルでキャッシュしている処理、セッション属性、ServletContext 属性を調べましょう。キャッシュのキー生成などを誤って無限にインスタンスをキャッシュしたことがあります。
(2) ループ処理で無限ループになっていないかを調べましょう。ローカル変数を大量に消費している可能性があります。
(3) Hashtable、HashMap、ArrayList、HashSet などをキャッシュしている場合、内部で使用されている変数がどんどん2倍になり、巨大になっている可能性があります。
(4) それ以外は知りません。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。