SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine編集部ではイベントを随時開催しております

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

Events & Seminars

Inside Java VM ― 先進のメモリ管理技術「明示管理ヒープ方式」とは

HITACHI Open Middleware World 2008 Autumn Cosminexus Dayレポート

Java アプリケーションサーバの導入により容易にWeb システムを構築できるようになった反面、システムのスローダウン現象が発生するなど性能上のトラブルが後を絶たない。この原因の1 つはJava VM のメモリ管理機能にある。この課題を解決する方法を紹介する。  

Javaのメモリ管理には欠陥がある

 いまや基幹業務をJava アプリケーションサーバで稼働させるのは珍しくなくなってきている。Javaによる開発生産性の向上も期待でき、ハードウェアコストも抑えることが可能だ。

 その一方で、業務処理のピーク時にスループットが低下するなど、性能上のトラブルも発生するようになっている。システムの性能劣化につながる要因として、① CPUネック、② メモリネック、③ バックエンドシステムによるネックの3つがある。ここでは② のメモリネックによる問題を見ていく。特にJava VM(仮想マシン)のメモリ管理機能(ガーベジコレクション)には問題が多い。

講演者:
株式会社日立製作所 ソフトウェア事業部
第2AP基盤ソフト設計部担当部長 中島恵氏
株式会社日立製作所 中島恵氏

 ガーベジコレクション(GC)とは、JavaVMが管理するメモリ領域中の使用済みメモリ領域を破棄し、空き領域を作ることだ。これにより効率的なメモリの使用が可能になる。しかしながら現実にはメモリ領域のサイズは非常に大きいため、メモリ領域全体を対象としたGC(Full GC)が発生した場合、その間業務アプリケーションが停止してしまうのである。

 GCが対象とするメモリ領域は、Javaヒープと呼ばれる部分と考えてよい。JavaヒープはNew領域とOld 領域で構成される(図参照)。また、短命なインスタンスが格納されているNew領域を対象としたGCをCopy GCと呼ぶ。Copy GCの処理時間は0.01 ~ 0.7 秒であるため、それほど業務には影響がないが、Old 領域も対象としたFull GCでは1~数十秒も処理に時間がかかってしまう。

 一方、Java のメモリ管理では、GC実行そのものの回避は不可能だ。そこで注目したのが、GCアルゴリズムの変更ではなく、新たなヒープ管理方式の採用である。それが「明示管理ヒープ方式(略称:Eヒープ方式)」(特許出願済)である。

Javaヒープ構成
Javaヒープ構成

Full GCレスを実現するEヒープ方式

 Full GC を発生させる主要因は、Old領域へ格納されたセッション情報である。セッション情報は長命、つまりログオフ後も残存し、Full GC を頻発させる原因となる。

 Eヒープ方式では、セッション情報をEヒープ領域と呼ばれる、Old 領域とは異なる領域に配置する。この結果、Full GC レスが実現されることになる。また、この処理はCosminexusが行うため、既存のプログラムを変更する必要はない。結果、システム全体の処理性能を向上しつつ、安定性をも維持できる。

Eヒープ方式の仕組み
Eヒープ方式の仕組み

Cosminexusが持つ 優れたメモリトラブル回避機能

 Cosminexusには、メモリトラブルを回避するための機能が多数搭載されている。

 メモリトラブルで代表的なのが、プログラム内に解放されないJava オブジェクトが継続的に増加してしまうメモリリークだ。Cosminexusの「ヒーププロファイル機能」を使えば、メモリリークの原因となっている箇所を容易に検出可能になる。特にヒープ情報の出力はJava VM自身で行っているため、高い精度で解析を行うことが可能となっている。

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
Events & Seminars連載記事一覧

もっと読む

この記事の著者

EnterpriseZine編集部(エンタープライズジン ヘンシュウブ)

「EnterpriseZine」(エンタープライズジン)は、翔泳社が運営する企業のIT活用とビジネス成長を支援するITリーダー向け専門メディアです。データテクノロジー/情報セキュリティの最新動向を中心に、企業ITに関する多様な情報をお届けしています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/920 2008/12/19 09:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング