2011-10-27 21 views
2

TomcatでThreadLocalがGlassfishサーバーのメモリリークを引き起こしますか?どうして? http://wiki.apache.org/tomcat/MemoryLeakProtectionGlassfishのThreadLocalメモリリーク

+0

Ummm ...あなたがリンクしたページには、Tomcat 7.0.6で修正された問題が記載されています。それはあなたのために十分ではありませんか? –

+0

@Stephen静的なクラス変数の場合、それは検出されず、デフォルトでは修正はオフになっています。そしてまた、私はこの質問は主になぜの知識のためですか?使用するサーバーを選択するためのものではありません。とにかく、あなたのコメントをありがとう。 – tanyehzheng

+0

1)あなたは静的変数について質問しませんでした。あなたはThreadLocalのリークについて尋ねました。 2)デフォルト以外の修正をオンに簡単にすることができます。 –

答えて

1

はい、それが漏れ出すとGlassfishのも、この比較的最近のGlassfishのJIRA課題に応じて警告を表示しません。しかし言われる必要がある何

http://java.net/jira/browse/GLASSFISH-14128

はThreadLocalの特定の漏れがあるということですアプリケーション/ Webサーバー自体の「バグ」ではなく、それらのコンテナで実行されているコンポーネントのコード(これらのコンポーネントがサーブレット、セッションBeanなど)に問題があります。

一般的に、アプリケーションサーバー/ Webコンテナは、開発者が多くのメンテナンスコードを書いたり、ビジネスロジックに重点を置いたりしないようにすることを目的としています。しかし、このThreadLocal問題のようなものが適切に行われるように、アプリケーションサーバの仕組み(スレッドプール、クラスローダー、デプロイ/アンデプロイメントメカニズムなど)を理解する必要があります。それは常に容易ではなく、非常に扱いにくいことがあります。私はGlassfishのメモリリークの問題について読んで覚えていますか?カスタムログレベルの使用に関連しています。

Apache Tomcatは、ユーザーコードで一般的に発生するメモリリークの問題をユーザー/取引に警告するヘルパーメカニズムを備えています。しかし、質問に記載されているリンクでも、このメカニズムを使ってすべてのThreadLocalメモリリークが自動的に行われるわけではありません。

Glassfishにはまだこの機能が追加されていないようです。

+0

ありがとうMarianP .. – tanyehzheng

+1

これを見てくださいhttp://stackoverflow.com/questions/6847580/i-need-help-finding-my-memory-leak-using-mat – Preston

0

この問題は、あらゆる種類の問題を引き起こします。私たちは、手動でオブジェクト自分自身を解放しているしばらく前

I need help finding my memory leak using MAT

それについて掲載しました。私はGFのバグリストで、これが3.1xリリースで修正されているのを見たと思います。