メモリリークが多発! メモリの開放漏れはこうやって見つける:Cosminexus V8 Review
システムダウンやスローダウンを招くWebアプリケーションサーバのメモリリーク。Cosminexusのメモリ解析機能はこのメモリリークの回避を支援する。
メモリリークの原因究明は困難
Javaアプリケーションにおける不要なJavaオブジェクトは、Java VMが自動的に判断をしてガベージコレクション(GC)を行い、使用メモリを開放している。Java VMが自動判断を行う条件としてはJavaオブジェクトが使われなくなったこと、すなわち他のJavaオブジェクトから参照されなくなったことであるが、この参照が意図しないところで残っていることがある。これがメモリリークにつながり、最終的にはメモリ不足でシステムダウンという現象を引き起こす。
メモリリークの典型的な例として、アプリケーションプログラムのモジュール間で共用するテーブルなどに登録していくオブジェクトの登録解除漏れや、決まった時間だけ使用するキャッシュなどの削除漏れがある。このメモリリークを発見することはなかなか難しく、アプリケーション開発者がアプリケーションプログラムにデバッグロジックを埋め込んだり、解析ツールを適用して原因を特定する方法が一般的に行われている。
しかし、多くの場合は大量のログ出力に伴う負荷や解析ツールの負荷を伴うため、本番の運用環境での適用は制限される。また、デバッグロジックの埋め込みや解析ツールの適用によりアプリケーションプログラムの挙動が変わってしまう場合もあり原因究明がより困難になる。
Cosminexus標準搭載のJavaVMのヒープ領域状態表示で原因を素早く特定
この問題を解決するのがCosminexusのメモリ解析機能である。標準搭載されているJava VMにヒープ領域の状態を表示する機能があらかじめ組み込まれているため、アプリケーションプログラムの変更は不要であり、本番環境での適用も可能である。特に外部コマンドにからの適用であることからサーバの再起動をすることなく情報を採取できるのである。表示される情報は、実際のヒープ領域を走査していることから、アプリケーションプログラムのコーデイングを机上で追いかけても見過ごしてしまうバグを発見できる。
ヒープ領域の状態を表示する機能には統計情報出力と参照関係情報出力がある。
(a)統計情報出力機能
統計情報出力機能は、オブジェクトサイズの統計情報であり、各クラスが何個のインスタンスオブジェクトを生成していて合計サイズがどのくらいかを知ることができる。これによりどのクラスがメモリを圧迫しているか、また存在していないはずのクラスの存在を見つけることもでき、メモリリークの発見を可能にする。
(b)参照関係情報出力機能
参照関係情報出力機能は、特定のクラスのインスタンスと参照関係にあるインスタンスを表示する。これは例えば1つ目の機能であるクラスが予定外に大きい場合や削除しているはずなのに残存している場合などにそのクラスが何のクラスから参照されているかを知ることができ、問題の参照関係を究明することができる。さらに、このインスタンスがヒープ領域上のNew領域やOld領域などどの領域に存在していることも表示するようにしており、より細かいメモリリーク解決を支援している。
次回はJavaバッチアプリケーションの実行について解説する。
関連記事
- Webアプリケーションの次へ――AdobeのRIA戦略に向けられる企業の視線
Adobeの勢いが止まらない。FlashやPDF、そしてそれらのメリットを生かしたアプリケーションを構築するための企業向けプラットフォーム「Adobe LiveCycle Enterprise Suite」はRIAの普及に伴って、その支持を確実に増している。Adobeのシニアテクニカルエバンジェリストに話を聞いた。 - Cosminexus V8 Review:「だんまり」を決め込むWebシステム。バグをどう見つける?
開発やシステム運用段階においてWebシステムの無応答状態が発生した場合、原因となるアプリケーションプログラムを特定するのは難しい。Cosminexus標準搭載のJavaVMには、このような問題を解決するトレース機能が備わっている。 - Cosminexus V8 Review:プロの技をシステム化せよ!失敗しないキャパシティ管理
システムの安定稼働を目指すうえでは、サーバのキャパシティを管理することが大切だ。だが、予期せぬ事態への対処には人の判断や操作が介在し、さらなる障害を招きかねない。これを防ぐ方法とは何だろうか。 - Cosminexus V8 Review:誰もができる、一貫した性能ボトルネック解析
性能ボトルネックの解析は、SEの経験やスキルが求められるやっかいな作業だ。クライアント側とサーバ側で一貫した解析を可能にする、Cosminexus搭載の解析ツールについて解説する。 - Cosminexus V8 Review:トラブルよ、さらば!――Webシステム構築のミスを防ぐには
Webシステムの構築の中で特に煩雑になるのが環境パラメータ設定と本番環境への移行だ。これらの作業における手間を省き、ミスをなくすための方法を紹介する。 - アナリストに学ぶ情シストレンド:“サムライAPサーバ”を選択する視点
APサーバには「舶来品」が多い。そのため日本語処理関連で苦労した経験をお持ちの方も少なくないだろう。だが国産APサーバの中には、文字エンコード変換高速化を図り、ユーザーの体感レスポンス改善を図ったものもある。日本の情報システムに最適なAPサーバを選ぶ視点を、アナリストが示す。 - イノベーションに求められる企業情報基盤
去る11月18日、六本木アカデミーヒルズ40にて日立製作所のソリューションを紹介するOpen Middleware World 2008 Autumn Cosminexus Dayが開催された。当日は日立製作所の統合情報基盤「Cosminexus」が牽引するイノベーションについて、多数のセミナーが催された。 - Cosminexus V8 Review:Webアプリの開発は、デバッグ含めワンストップで――MyEclipse
エンタープライズ向けのWebアプリケーション開発では、生産性向上や品質向上に寄与する取り組みや最新技術の採用など、開発環境に求められる要件は多岐にわたる。CosminexusではMyEclipse環境を中心に開発者の要求に応える。 - HITACHI Open Middleware World 2008 Autumn Report:仮想化時代に求められる運用管理の手法とは
11月17日、日立製作所の最新ITソリューションを紹介する「Open Middleware World 2008 Autumn」が開幕した。同社の運用管理ソフトウェアである「JP1」およびアプリケーションプラットフォーム「Cosminexus」の最新機能を中心に、事例や展示を織り交ぜた総合的なソリューション紹介が行われている。 - Cosminexus V8 Review:サーバダウンは起こるもの。だがユーザーには迷惑をかけない!
Webシステムを安定稼働させるための課題は、メモリ管理方式だけではない。想定外のリクエスト集中でもシステムを止めない工夫や、部分障害の全体波及を食い止めたり,障害の兆しを検知して先手を打ったりする必要がある。
Copyright © ITmedia, Inc. All Rights Reserved.