JP5657169B2 - 計算機、プログラム及びメモリ管理方法 - Google Patents

計算機、プログラム及びメモリ管理方法 Download PDF

Info

Publication number
JP5657169B2
JP5657169B2 JP2014501826A JP2014501826A JP5657169B2 JP 5657169 B2 JP5657169 B2 JP 5657169B2 JP 2014501826 A JP2014501826 A JP 2014501826A JP 2014501826 A JP2014501826 A JP 2014501826A JP 5657169 B2 JP5657169 B2 JP 5657169B2
Authority
JP
Japan
Prior art keywords
data
storage area
held
area
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014501826A
Other languages
English (en)
Other versions
JPWO2013128492A1 (ja
Inventor
元樹 小幡
元樹 小幡
康志 宮田
康志 宮田
博泰 西山
博泰 西山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of JP5657169B2 publication Critical patent/JP5657169B2/ja
Publication of JPWO2013128492A1 publication Critical patent/JPWO2013128492A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • G06F12/0276Generational garbage collection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、計算機、プログラム及びメモリ管理方法に係り、特に、データ参照関係を管理する計算機、プログラム及びメモリ管理方法に関する。
計算機がデータ間の参照関係を調査する際、一般にデータに対する処理を停止する技術が用いられる。このようなデータ参照関係の調査は、例えば、データの要不要を自動的に管理するガベージコレクションで用いられており、Java(登録商標)仮想マシンで利用されるガベージコレクタでは、この仮想マシン上で動作するアプリケーション(以後、「AP」もしくは「プログラム」と称する。)の動作を完全に止めるStop-the-World方式が用いられることが多い。
このように、データ参照関係調査においてデータに対する処理を停止するのは、参照調査中にデータ更新や削除によって、参照関係が書き換えられるのを防ぐためであり、Javaのガベージコレクタのように、本方式を用いてデータ間参照関係を調査するものが多い。参照関係調査時間が増大するとプログラム実行(データに対する処理)の停止時間も長くなり、処理の遅延が発生する。
本問題への対策として考えられるのが、調査範囲の限定である。非特許文献1は、関数型言語のようなデータ更新の無いシステムに対する参照調査領域を限定する技術を開示する。この技術は、まずデータを生成した順番で、旧世代のデータを格納する領域と、新世代のデータを格納する領域とにメモリ領域を分けるようになっている。そして、新世代のデータを格納する領域を対象とした不要領域の回収処理を優先的に実行することで、一定量の領域を回収するのに必要な不要データ回収処理の回数を低減するようになっている。その結果、この技術は、プリケーション等の処理の停止時間を削減できる。
また、非特許文献2は世代別ガベージコレクションでの世代数を増大させることによる参照調査領域を限定する技術を開示する。この技術は、不要データを格納するメモリ領域の回収処理時には、世代別に分割した領域の1つのみを参照元調査の対象とする。これにより、旧世代の領域全てを回収処理対象にするのに比べ、参照元調査対象となるデータ量(領域)が減少する。その結果、この技術は、1回の不要データ領域の回収処理におけるデータに対する処理の停止時間を短くすることができる。
Todd A. Anderson, Optimizations in a Private Nursery-based Garbage Collector, In Proceedings of the 2010 international symposium on Memory management, pp.21-30, 2010 Richard L. Hudson, Incremental collection of mature objects, In Proceedings of the International Workshop on Memory Management, pp.388-403, 1992
しかしながら、非特許文献1が開示する技術は、上述のように関数型言語を前提としていることから、旧世代のデータ生成時に存在しなかった新世代のデータを、その旧世代データが参照するような事象が発生しないという特定の環境下でのみ適用できるものである。データについて削除以外の更新(なお、ここでデータの削除とは、特定のデータから参照されない状態とすることをいう。即ち削除により新世代又は旧世代のデータに新しく参照元が追加されることはない。)が発生し、データの生成時に関係なく、旧世代のデータから新世代のデータを参照するような事象を発生させる言語を用いたシステムには適用することができない。このような旧世代のデータから新世代のデータを参照する言語を用いたシステムにおいて、旧世代に属するデータの参照元を調査するには、新世代と旧世代を含めた全領域を調査対象とする必要があり、参照調査範囲を新世代に属するデータに限定することができない。
また、非特許文献2に開示されるように、旧世代のデータを格納するメモリ領域を世代別に分割し、データの生成順に分割した領域を第1世代、第2世代、・・・第N世代とすれば、第N世代のデータの参照元は第N世代以降のデータに限定できることから、参照調査範囲を限定することができるとも言える。
しかしながら、非特許文献2であっても、第N世代よりも前の世代のデータに更新が発生した場合には、参照関係の調査対象が完全ではなく、(メモリの解放処理とともに)生存データを不用意に削除してしまうという課題が残る。即ち一度生成したデータの更新が発生する言語に適用するには不十分であるといえる。
このように、非特許文献1及び2に開示された技術は、従前に格納されたデータに更新が発生し無いシステムでないと適用できない点と、世代数を増大させても、各世代の参照調査自体は定期的に行わなければならない点から、参照調査の時間を短縮するための根本的な解決策にはなっていない。
上記課題を解決するために、例えば、本発明の一態様は、保持するデータへの変更を可能とする第1及び第2記憶領域と、保持するデータへの変更を不可能とする第3記憶領域と、プログラムからの要求により、第2及び第3記憶領域が保持するデータに対するアクセスを実行する制御部と、を有する計算機であって、制御部は、第2及び第3記憶領域に保持するデータにアクセスする為の特定データを第1記憶領域に設定し、特定データに第3記憶領域が保持するデータへの参照情報を含ませ、解放対象である第3記憶領域が保持するデータのうち、特定データと参照関係のあるデータを第2記憶領域に移動する処理の実行中に、プログラムから、第3記憶領域が保持するデータに対する特定データを介したアクセスが発生した場合、アクセス対象であるデータが第2記憶領域に移動済みか否かを判定し、移動していた場合は、該特定データに含まれる参照情報を移動先のデータに補正してアクセスすると共に第3記憶領域が保持するデータに参照関係を有する特定データからの参照を全て補正し、参照を全て補正した後に第3記憶領域を解放する計算機である。
本発明の一態様によれば、データ格納領域の解放に伴うプログラム(例えば、アプリケーション等)の停止時間を短縮することができる。
本発明の適用した一実施形態の構成を示すブロック図。 閉塞領域用データ生成APIの一例を示す模式図。 閉塞領域用データ生成APIの一例を示す模式図。 本実施形態における記憶領域とデータ参照の関係例を示す模式図。 本実施形態における解放判定・データ移動処理の例を示すフロー図。 本実施形態における参照先補正処理の例を示すフロー図。 本実施形態における閉塞済み領域解放処理の例を示すフロー図。 本実施形態におけるプログラム実行、解放判定・データ移動処理、参照先補正処理及び閉塞済み領域解放処理との関係を時系列で示すタイムフロー。 本実施形態における、解放判定・データ移動処理実行前における、記憶領域とデータ参照関係の例を示す模式図。 本実施形態における、閉塞済み領域解放処理実行直前における、記憶領域とデータ参照関係の例を示す模式図。
以下、本発明を適用した一実施の形態について図面を用いて説明する。なお、本実施形態は、Java仮想マシンを前提とした計算機システムに対して本発明を適用した例について説明するが、本発明はこれに限ったものではなく、ガベージコレクションのようなメモリ管理を自動化する機構を有する他のシステムにも有効なものである。
図1に、計算機システムの構成を示す。計算機システムは、CPU102、主記憶装置としてのメモリ103、補助記憶装置としての外部記憶装置109及びユーザ操作を受け付ける入力装置(不図示)並びに種々の情報を出力する表示装置(不図示)を有するサーバ装置である。なお、外部記憶装置109は、計算機システム101内に設けられてもよい。
計算機システムは、Java仮想マシンとしての動作環境を提供するために、プログラムと、CPU102との協働により、JavaVM(Virtual Machine)105が構成される。Javaプログラム104は、例えば、JavaVM105で実行可能な少なくとも1つのユーザアプリケーション(AP)等である。Javaプログラム104の実行により生成されたデータ(例えば、オブジェクト)は、先ず、メモリ103の一時領域130若しくは後述する閉塞待ち領域150に保持される。
本実施形態における計算機システムの特徴の一つは、データの記憶領域の構成にある。計算システムのメモリ103上には、データの記憶領域として、一時領域130と、閉塞領域140とが設けられるようになっている。一時領域130はJavaプログラム104が生成・使用するデータを一時的に保持する記憶領域である。Javaプログラム104の実行により生成されたデータは、一時領域130若しくは閉塞待ち領域150に保持するようになっている。閉塞待ち領域へのデータ配置は、特定API(Application interface)によって実施され、同領域に配置されたデータから参照可能な一時領域内データもガベージコレクション時に閉塞待ち領域150に移動するようになっている。
閉塞領域140は、一時領域130に保持されたデータを任意の契機で移動することが可能な記憶領域である。閉塞領域140には、1以上の閉塞待ち領域150及び1以上の閉塞済み領域160という2種類の記憶領域が設けられる。
閉塞待ち領域150は、一時領域130からのデータの移動先となる領域であり、新規なデータの追加記憶や更新されたデータの上書き等を行うことができる記憶領域である。 閉塞済み領域160は、一時領域130及び閉塞待ち領域150に格納されたデータの移動先とならない領域であり、新規データの追加記憶や保持するデータに上書き等の変更を加えることができない記憶領域である。閉塞待ち領域150と閉塞済み領域160の関係は、閉塞待ち領域150の使用量が所定の量に達したときに、その閉塞待ち領域150が、閉塞済み領域160になる関係にある。即ち閉塞済み領域160は、一度閉塞済みとなると、一時領域130に保持されたデータからの参照に変更が発生しないことが保障できる記憶領域である。
よって、ガーベッジコレクションの際、一時領域130との参照関係調査時に閉塞済み領域160内に格納されたデータを参照調査する必要がなくなり、参照調査領域を限定でき、ガーベッジコレクション時にJavaプログラム104のスレッドが停止する時間を短縮することができるという効果がある。
なお、「一時領域130との参照関係が無くなる」というのは、プログラム実行によって参照が明示的に削除されるか、後述するように、閉塞待ち領域150へのデータ移動が完了することを表す。実際に一時領域130への参照が全てなくなったかどうかは、ガベージコレクション時に判断可能である。
なお、閉塞済み領域160は、それ自体に保持されたデータに対して変更はできずに参照のみを可能とする領域であるが、仮に変更が生ずる場合には、変更対象のデータを閉塞待ち領域150に移動させることで当該データの変更を可能とするようになっている。より具体的には、当該データを閉塞待ち領域150にコピーし、コピーしたデータに対して更新処理を行うCopy on Write方式を適用するようになっている。これにより、ユーザによるプログラミングには影響なく、データ変更可能領域と不可能領域を設定することが可能となる。
Javaプログラム104は、閉塞領域アクセスデータ生成APIを有する。閉塞領域アクセスデータ生成APIは、種々の宣言によって、Javaプログラム104が生成したデータの格納先を指定する。
図2Aに、閉塞領域用データ生成APIの具体例を示すステートメントを示す。ステートメント201は、クラス情報から目的データを生成するAPI利用例である。閉塞領域管理用クラス“Cache”のputメソッド202を呼び出し、引数203には作成したいデータのクラス(以下、「目的クラス」という場合がある。)として“TargetClass”を取り、返り値として、閉塞領域アクセスデータ生成部110で生成された特定データ204(“TargetClas po”)を返す。本特定データ204は、クラス203と同様の目的クラスであるかのように見える。
図2Bに示すステートメント205は、既存のデータを閉塞待ち領域160に移動させるAPI利用例である。この場合、ステートメント201におけるputメソッド202の引数203が、一時領域130内の既存データ206(“TargetObject”)となる。
特定データ及び目的データのメモリ103上での配置は、特定データは一時領域130内、目的クラス203を元に生成した目的データは、閉塞待ち領域150内に生成され、特定データから目的データを参照する形となる。なお、特定データと目的データは1対1に対応しており、閉塞待ち領域150に生成された目的データ204にアクセスする際は、一時領域130内の特定データ201を介するものとする。
なお、ステートメント205の場合、一時領域130内の既存データが閉塞待ち領域150に移動させられ、同様の参照形態をとるようになる。
図3に、以上説明したメモリ103の各記憶領域と、データの配置及び参照関係とを模式的示す。一時領域130には、特定データ311a、311b及び311cが配置される。閉塞待ち領域150には、目的データ322a、322b及び322cが配置される。閉塞済み領域160には、目的データ333a、333b、333c及び333dが配置される。
特定データ311は、参照350によって閉塞待ち領域150の目的データ322a参照し、目的データ332b及び332cも、参照351及び352によって、それぞれ目的データ322aを参照する。
特定データ311b又は311cは、閉塞済み領域160の参照353又は354によって、目的データ333b又は333cをそれぞれ参照する。閉塞済み領域160の目的データ333aは、参照355によって、同じ閉塞済み領域160の目的データ333から参照され、目的データ333dは何れのデータとも参照関係に無い。
図1に戻り、JavaVM105の構成について説明する。
JavaVM105は、その機能部として、閉塞領域アクセスデータ生成部110と、解放判定・データ移動部111と、閉塞済み領域解放部113とを有する。
閉塞領域アクセスデータ生成部110は、閉塞待ち領域150及び閉塞済み領域160に保持する目的データを指す特定データ311(a〜c)を生成する機能部である。Javaプログラム104が、閉塞待ち領域150の目的データ322a又は閉塞済み領域160の目的データ333b並びに333cにアクセスする場合、それぞれ特定データ311a〜cを介してアクセスするようになっている。
解放判定・データ移動部111は、閉塞領域140の閉塞済み領域160から、解放対象とする記憶領域を選択して、「閉塞済み領域解放処理」の一部を担う機能部である。具体的には、解放判定・データ移動部111は、例えば、領域使用量が予め設定した閾値を超えた場合や、所定時間毎或いはJavaプログラム104における所定の処理の終了後といった種々の選択基準に基づいて、解放対象とする閉塞済み領域160を選択するようになっている。そして、解放判定・データ移動部111は、全解放対象外領域のデータから、解放対象として選択した閉塞済み領域160に格納されたデータに対する直接的又は間接的な参照関係がある場合、そのデータを閉塞待ち領域150に移動(例えば、コピー)する様になっている。
参照先補正部112は、解放判定・データ移動部111によって、閉塞待ち領域150に移動される前に、一時領域130に保持された特定データとの参照関係があったデータに対し、閉塞待ち領域150に移動後に、Javaプログラム104からアクセスが有った場合に、当該移動後のデータに対する参照を変更する機能部である。本機能部は、「閉塞済み領域解放処理」と並行して実行されることを特徴の一つとする。
閉塞済み領域解放部113は、解放対象として選択された閉塞済み領域160に保持されるデータに対し、解放対象外領域に保持されるデータからの参照が無い事を契機に、記憶領域の解放を実行する機能部である。
本実施形態の特徴の一つとして、上述の解放判定・データ移動部111、参照先補正部112及び閉塞済み領域解放部113による処理が、Javaアプリケーション104による通常の処理と並行して実行されることを上げることができる。従来、記憶領域を解放するには、解放処理中に、その対象となる記憶領域に記憶されたデータに対する変更の発生を回避するため、Javaプログラム104の処理を一時的に停止する必要があった。これに対し本実施形態では、解放処理に伴う参照関係調査や解放処理等をJavaプログラム104の通常の処理と並行して実行することができるため、Javaアプリケーション104の停止時間を低減することができるという効果がある。
次に、以上の構成を有する計算機システム101の処理について、図4〜6のフロー図を用いて説明する。
図4に、解放判定・データ移動部111による「解放判定・データ移動処理」のフローを示す。
S401で、解放判定・データ移動部111は、閉塞領域140の解放が必要かどうかを判断する。判断基準としては、例えば、メモリ使用量があらかじめ設定した閾値を超えた場合や、一定時間ごと、Javaプログラム104でのある処理終了後といったものが考えられる。
解放が必要と判断された場合(S401:Yes)解放判定・データ移動部111は、S403で、閉塞済み領域160から解放対象領域を選択する。この選択基準としては、例えば、一連の閉塞済み領域160に対するアクセス頻度の低い順、生成されてからの時間順、Javaプログラム104でのある処理終了後は利用しないとわかっているデータが配置されている領域を、希望する解放量となるまで選択するといった方法が考えられる。
S405で、解放判定・データ移動部111は、解放対象外の全領域から解放対象として選択した閉塞済み領域160への参照を調べ、直接及び間接的に参照可能なデータを全て閉塞待ち領域150に移動させ、処理を終了する。
なお、一連の解放処理を実行中もJavaプログラム104の所定の処理は並行して動作し続けることから、解放対象である閉塞済み領域160のデータに解放対象外の領域(例えば、一時領域130)のデータから参照があり、そのデータを閉塞待ち領域150に移動してしまうと、当該解放対象外の領域のデータからの参照が不可能となる。より詳細には、前述のように、Javaプログラム104から閉塞領域140内のデータにアクセスする際、一時領域130内に配置された特定データを介する必要があるが、特定データから見える閉塞領域140内の目的データが、閉塞済み領域160に存在する場合、並行して実行される上述のデータ移動により閉塞待ち領域150に移動されている可能性がある。
そこで、図4の解放判定・データ移動部111の処理と並行して、特定データからの参照先を最新に保つようにする参照補正処理を行う。
図5に、参照先補正部112による「参照先補正処理」のフローを示す。
S501で、参照先補正部112は、Javaプログラム104からのデータアクセスが、特定データを介したアクセスかどうかを判定する。特定データを介したアクセスである場合(S501:Yes)、S503に進む。
S503で、参照先補正部112は、特定データからの参照先である目的データが解放対象の閉塞済み領域160か否かを判定する。目的データが解放対象の閉塞済み領域160である場合(S503:Yes)、S505に進む。
S505で、参照先補正部112は、目的データが閉塞待ち領域150に移動済みか否かを判断する。移動済みであった場合(S505:Yes)、S507に進む。
S507で、参照先補正部112は、当該特定データからの参照先を移動後の目的データに変更する。
以上の参照補正処理が、解放判定・データ移動処理と並列して実行されることで、Javaプログラム104の通常の処理が停止することを防止する。
参照補正処理の実行により、解放対象の閉塞済み領域160への参照が無くなると、解放処理部113が、閉塞済み領域160の解放処理を実行する。
図6に、閉塞済み領域解放部113による、「閉塞済み領域解放処理」のフローを示す。
S601で、閉塞済み領域解放部113は、一時領域130の特定データについて、参照調査が未調査のものがあるか否かをチェックする。未調査の特定データが有る場合(S601:Yes)、S603に進み、無い場合(S601:No)は、S607の処理に進む。
S603で、閉塞済み領域解放処理部113は、未調査の特定データを一つ選択し、当該特定データからの参照先データが解放対象の閉塞済み領域160に保持されているか否かを判断する。解放対象の閉塞済み領域160への参照を保持していた場合(S603:Yes)は、当該閉塞済み領域160に印をつけ(チェックし)、S601に戻る。参照先データが閉塞済み領域160に保持されていない場合(S603:No)、S601に戻る。
この処理を全特定データに対して実施した後(S601:No)、S607において、印のついていない閉塞済み領域160を解放し、処理を終了する。
印がついていない閉塞済み領域160には、当該領域外に保持されたデータから当該領域が保持するデータ参照が全くない。このことは、Javaプログラム104の実行で必要なデータが存在しないことを保障することから、領域全域を解放してもJavaプログラム104の通常の実行に何ら影響を与えないことを意味する。
以上の図4〜図6の処理を、模式図を用いて纏める。図7に、閉塞済み領域160を解放する際の一連の処理の流れを模式的に示す。同図は左から右に通常のJavaプログラム104の処理、特定データ参照の補正処理、解放判定・データ移動処理及び閉塞済み領域160の開放処理が時系列で実行される様を示す。
時刻701において、Javaプログラム104と並行して、「解放判定・データ移動処理(図4)」が実行される。具体的には、解放判定・データ移動処理部111が、閉塞領域140の解放要否を判断し(S401)、解放対象とする閉塞済み領域160を選択し(S403)、選択した解放対象領域に保持されたデータに対する解放対象外領域に保持されたデータからの参照調査及び被参照データを閉塞待ち領域150に移動する処理を行う(S405)。
「解放判定・データ移動処理」に並行して、特定データの「参照先補正処理」が実行される。具体的には、Javaプログラム104からのデータアクセスが、特定データを介したアクセスかどうかを判定し(S501)、特定データを介したアクセスである場合は、目的データが解放対象の閉塞済み領域160に保持されているか否かを判断し(S503)、解放対象領域に保持されている場合、その目的データが閉塞待ち領域150に移動済みか否か判断し(S505)、移動済みの場合、特定データからの参照先を移動後の目的データに変更する(S507)。
時刻702において、閉塞済み領域解放部113が、「閉塞済み領域解放処理」を実行する。これに並行して、Javaプログラム104は、通常のプログラム実行を並列実行する状態となる。
なお、S501〜507に示す特定データからの参照先補正処理は、Javaプログラム104の実行に伴って実施されるため、プログラムの進行度合いによっては、アクセスされない特定データが出てくることも予想される。このような特定データが存在すると、S601〜607における閉塞済み領域解放処理が滞り、解放されない状況となることも考えられる。このような場合、S405におけるデータ移動処理の終了後の任意の時点で、Javaプログラム104を実行する全スレッドを一時停止させ、特定データからの参照先補正処理を強制的に実施するようにしてもよい。
また、他の構成としては、Javaプログラム104を実行するスレッド群に対して特定データをスレッドローカルデータとして管理することにより、解放対象領域への参照を保持する特定データを持つスレッドのみを停止させるようにしてもよい。この場合、特定データからの参照先補正処理を強制的に実施する際においても、全てのスレッドを停止させる必要がないという効果が得られる。
最後に、図7の時刻701(解放処理前)と、時刻702(閉塞済み領域160の解放直前)との時点における、データの記憶領域と参照の関係を説明する。図8Aに、時刻701のメモリイメージを示し、図8Bに、時刻702のメモリイメージを示す。
図8Aにおいて、一時領域130には、特定データ311a、311b及び311c配置されている。それぞれに対応する目的データは322a、333b及び333cである。
閉塞済み領域160に保持されたデータのうち、333b及び333cは、参照353及び参照354によって、特定データ311b及び311cに直接的に参照されており、333aは、間接的に参照されている。
よって、図8Bに示すように、データ333b、333c及び333aは、閉塞待ち領域150に移動(コピー)され、データ334b、334c及び334aとなる。
参照先補正処理では、参照353、354、355も、新たに参照370、380、390に変更される。その後、閉塞済み領域160は、解放される。
本実施形態の特徴の一つは、Javaプログラム104の通常の実行に必要なデータ、即ち参照関係のあるデータを参照可能にしつつ、記憶領域内にそのような参照がないデータのみを保持する領域(例えば、解放対象の閉塞済み領域160)を確保できる点にある。この構成により、参照調査の範囲を限定することができ、参照調査に要する時間を低減できるという効果がある。
また、本実施形態の他の特徴の一つは、参照関係のあるデータを特定の記憶領域(例えば、閉塞待ち領域150に集約しつつその移動中のデータにJavaプログラム104からのアクセスが有った場合に、当該データに対する参照先補正処理を並行して実行する点にある。これにより、参照補正のための処理時間を別に設ける必要がなくなり、Javaプログラム104の通常の実行を停止する必要がなくなるという効果がある。
なお、本発明は上記種々の構成に限定されるものではなく、その趣旨を変更しない範囲で当業者であれば想到するであろう種々の構成を適用することがきる。特に、本実施形態では、プログラムとの協働により各機能部を構成する例を説明したが、これら一部をハードウェア処理とすることも可能である。
更に、本実施形態で説明した種々のプログラムは、その一部又は全部を電子・電磁式及び又は光学式記録媒体に格納してコンピュータにインストールことも可能であるし、インターネット等の有線又は無線の通信網を介してダウンロードすることも可能である。
101 計算機システム
104 Javaプログラム
105 JavaVM
110 閉塞領域アクセスデータ生成部
111 解放判定・データ移動部
112 参照先補正部
113 閉塞済み領域解放部
130 一時領域
140 閉塞領域
150 閉塞待ち領域
160 閉塞済み領域

Claims (10)

  1. 保持するデータへの変更を可能とする第1及び第2記憶領域と、保持するデータへの変更を不可能とする第3記憶領域と、プログラムからの要求により、前記第2及び第3記憶領域が保持するデータに対するアクセスを実行する制御部と、を有する計算機であって、前記制御部は、
    前記第2及び第3記憶領域に保持するデータにアクセスする為の特定データを前記第1記憶領域に生成し、
    前記特定データに第3記憶領域が保持するデータへの参照情報を含ませ、
    解放対象である前記第3記憶領域が保持するデータのうち、前記特定データと参照関係のあるデータを前記第2記憶領域に移動する処理の実行中に、前記プログラムから、前記第3記憶領域が保持するデータに対する特定データを介したアクセスが発生した場合、第3記憶領域が保持するデータへのアクセスがデータの変更であれば、変更した第3記憶領域が保持するデータを第2記憶領域へ保存し、該特定データに含まれる参照情報を移動先のデータに補正してアクセスすると共に前記第3記憶領域が保持するデータに参照関係を有する特定データからの参照を全て補正し、
    第3記憶領域が保持するデータへのアクセスがデータの参照であれば、第3記憶領域が保持するデータを参照させることを特徴とする計算機。
  2. 請求項1に記載の計算機であって、
    前記制御部は、
    前記特定データと参照関係のある前記第3記憶領域が保持するデータの前記第2記憶領域への移動及び前記アクセスが発生したデータに対する参照の補正を、前記プログラムの通常の処理と並行して実行する
    ことを特徴とする計算機。
  3. 請求項1又は2に記載の計算機であって、
    前記制御部は、
    前記第3記憶領域が保持するデータと参照関係がある前記特定データの参照がすべて補正される前に該第3記憶領域を解放する場合、前記第3記憶領域が保持するデータに対する前記プログラムからのアクセスを停止し、
    前記第3記憶領域が保持するデータと参照関係を持つ特定データからの参照を補正することを特徴とする計算機。
  4. 請求項3に記載の計算機であって、
    前記制御部は、
    特定データをスレッドローカルデータとし、該スレッドローカルデータを扱うスレッドのデータ操作処理のみを停止し、前記参照を補正する
    ことを特徴とする計算機。
  5. 請求項1〜4の何れか一項に記載の計算機であって、
    前記制御部は、
    前記特定データと参照関係にある前記第3記憶領域が保持するデータへの参照調査及び調査によって参照関係が検出された該データの前記第2記憶領域への移動を、当該データへのアクセス要求を行ったプログラムによって実行し、
    前記参照関係のある全てのデータを前記第2記憶領域に移動後、前記第3記憶領域を解放する
    ことを特徴とする計算機。
  6. 保持するデータへの変更を可能とする第1及び第2記憶領域と、保持するデータへの変更を不可能とする第3記憶領域と、プログラムからの要求により、前記第2及び第3記憶領域が保持するデータに対するアクセスを実行する制御部と、を有する計算機に、
    前記第2及び第3記憶領域に保持するデータにアクセスする為の特定データを前記第1記憶領域に設定する手順と、
    前記特定データに第3記憶領域が保持するデータへの参照情報を含ませる手順と、
    解放対象である前記第3記憶領域が保持するデータのうち、前記特定データと参照関係のあるデータを前記第2記憶領域に移動する手順と、
    前記移動させる手順の実行中に、前記プログラムから、前記第3記憶領域が保持するデータに対する特定データを介したアクセスが発生した場合、第3記憶領域が保持するデータへのアクセスがデータの変更であれば、変更した第3記憶領域が保持するデータを第2記憶領域へ保存し、該特定データに含まれる参照情報を移動先のデータに補正してアクセスすると共に前記第3記憶領域が保持するデータに参照関係を有する特定データからの参照を全て補正する手順と、第3記憶領域が保持するデータへのアクセスがデータの参照であれば、第3記憶領域が保持するデータを参照させる手順と、
    を実行させるプログラム。
  7. 請求項6に記載のプログラムであって、
    前記特定データと参照関係のある前記第3記憶領域が保持するデータを前記第2記憶領域に移動する手順及び前記アクセスが発生したデータの参照を補正する手順を、前記プログラムの通常の処理と並行して実行させる
    ことを特徴とするプログラム。
  8. 請求項6又は7に記載のプログラムであって、
    前記第3記憶領域が保持するデータと参照関係がある前記特定データの参照がすべて補正される前に該第3記憶領域を解放する場合、前記第3記憶領域が保持するデータに対する前記プログラムからのアクセスを停止する手順と、
    前記第3記憶領域が保持するデータと参照関係を持つ特定データからの参照を補正する手順と
    を実行させることを特徴とするプログラム。
  9. 請求項8に記載のプログラムであって、
    前記特定データをスレッドローカルデータとする手順と、
    該スレッドローカルデータを扱うプログラムのデータ操作処理のみを停止する手順と、 前記参照を補正する手順と
    を実行させることを特徴とするプログラム。
  10. 保持するデータへの変更を可能とする第1及び第2記憶領域と、保持するデータへの変更を不可能とする第3記憶領域と、プログラムからの要求により、前記第2及び第3記憶領域が保持するデータに対するアクセスを実行する制御部と、を有する計算機のメモリ管理方法であって、
    前記制御部が、
    前記第2及び第3記憶領域に保持するデータにアクセスする為の特定データを前記第1記憶領域に設定し、
    前記特定データに第3記憶領域が保持するデータへの参照情報を含ませ、
    解放対象である前記第3記憶領域が保持するデータのうち、前記特定データと参照関係のあるデータを前記第2記憶領域に移動する処理の実行中に、前記プログラムから、前記第3記憶領域が保持するデータに対する特定データを介したアクセスが発生した場合、第3記憶領域が保持するデータへのアクセスがデータの変更であれば、変更した第3記憶領域が保持するデータを第2記憶領域へ保存し、該特定データに含まれる参照情報を移動先のデータに補正してアクセスすると共に前記第3記憶領域が保持するデータに参照関係を有する特定データからの参照を全て補正し、
    第3記憶領域が保持するデータへのアクセスがデータの参照であれば、第3記憶領域が保持するデータを参照させることを含むメモリ管理方法。
JP2014501826A 2012-03-02 2012-03-02 計算機、プログラム及びメモリ管理方法 Expired - Fee Related JP5657169B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/001432 WO2013128492A1 (ja) 2012-03-02 2012-03-02 計算機、プログラム及びメモリ管理方法

Publications (2)

Publication Number Publication Date
JP5657169B2 true JP5657169B2 (ja) 2015-01-21
JPWO2013128492A1 JPWO2013128492A1 (ja) 2015-07-30

Family

ID=49081759

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014501826A Expired - Fee Related JP5657169B2 (ja) 2012-03-02 2012-03-02 計算機、プログラム及びメモリ管理方法

Country Status (3)

Country Link
US (1) US20140337597A1 (ja)
JP (1) JP5657169B2 (ja)
WO (1) WO2013128492A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011027626A1 (ja) * 2009-09-01 2011-03-10 株式会社日立製作所 メモリ管理方法、計算機システム及びコンピュータ可読媒体
WO2011104889A1 (ja) * 2010-02-25 2011-09-01 株式会社日立製作所 計算機システム、メモリ管理方法及びメモリ管理プログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3939975B2 (ja) * 2001-12-14 2007-07-04 松下電器産業株式会社 ガベージコレクション装置、ガベージコレクション方法及びガベージコレクションプログラム
US7165160B2 (en) * 2004-09-08 2007-01-16 Hitachi, Ltd. Computing system with memory mirroring and snapshot reliability
JP5031470B2 (ja) * 2007-07-19 2012-09-19 株式会社日立製作所 メモリ管理方法、情報処理装置及びメモリ管理プログラム
JP5064134B2 (ja) * 2007-08-03 2012-10-31 株式会社日立製作所 メモリ管理方法およびその方法を用いるコンピュータ
JP5153539B2 (ja) * 2008-09-22 2013-02-27 株式会社日立製作所 メモリ管理方法およびその方法を用いるコンピュータ
JP5281452B2 (ja) * 2009-03-25 2013-09-04 株式会社日立製作所 メモリ管理方法、コンピュータ、及び、メモリ管理プログラム
US9223793B1 (en) * 2009-06-03 2015-12-29 American Megatrends, Inc. De-duplication of files for continuous data protection with remote storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011027626A1 (ja) * 2009-09-01 2011-03-10 株式会社日立製作所 メモリ管理方法、計算機システム及びコンピュータ可読媒体
US20120198184A1 (en) * 2009-09-01 2012-08-02 Hitachi, Ltd. Memory management method, computer system and computer readable medium
WO2011104889A1 (ja) * 2010-02-25 2011-09-01 株式会社日立製作所 計算機システム、メモリ管理方法及びメモリ管理プログラム

Also Published As

Publication number Publication date
US20140337597A1 (en) 2014-11-13
JPWO2013128492A1 (ja) 2015-07-30
WO2013128492A1 (ja) 2013-09-06

Similar Documents

Publication Publication Date Title
David et al. {Log-Free} Concurrent Data Structures
Joshi et al. Dhtm: Durable hardware transactional memory
US8612493B2 (en) Allocation cache premarking for snap-shot-at-the-beginning concurrent mark-and-sweep collector
US20190004916A1 (en) Profiling asynchronous events resulting from the execution of software at code region granularity
EP1805630B1 (en) Cache eviction
EP3550442A1 (en) Database lock management with cache-optimized hash table
KR101677900B1 (ko) 데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법
US20120005684A1 (en) Priority rollback protocol
JP5614348B2 (ja) 命令処理方法、命令処理装置、及び命令処理プログラム
US8370579B2 (en) Global instructions for spiral cache management
US20150006843A1 (en) Thread-based memory management with garbage collection
US8495107B2 (en) System and method for use with garbage collected languages for enabling the allocated heap memory to be updated at runtime
US20140059093A1 (en) Information processing method and apparatus for garbage collection
WO2011027626A1 (ja) メモリ管理方法、計算機システム及びコンピュータ可読媒体
CN104750637A (zh) 用于加速器的可扩展输入/输出数据机制
US20210326343A1 (en) Storing derived summaries on persistent memory of a storage device
JP2008003882A (ja) コンパイラプログラム,リストベクトルの領域割当て最適化方法,コンパイル処理装置およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体
US20050066305A1 (en) Method and machine for efficient simulation of digital hardware within a software development environment
JP5657169B2 (ja) 計算機、プログラム及びメモリ管理方法
KR20190069134A (ko) 응용 프로그램간 파일 공유 장치 및 방법
JP6173031B2 (ja) コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム
US20140089611A1 (en) Memory management control system, memory management control method, and storage medium storing memory management control program
Han et al. SyncGC: a synchronized garbage collection technique for reducing tail latency in Cassandra
JP6369069B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP5577518B2 (ja) メモリ管理方法、計算機及びメモリ管理プログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141028

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141125

R151 Written notification of patent or utility model registration

Ref document number: 5657169

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees