JP2006134136A - アプリケーション処理装置、ガーベージコレクション実行方法、記憶領域管理方法及びガーベージコレクション実行プログラム - Google Patents

アプリケーション処理装置、ガーベージコレクション実行方法、記憶領域管理方法及びガーベージコレクション実行プログラム Download PDF

Info

Publication number
JP2006134136A
JP2006134136A JP2004323548A JP2004323548A JP2006134136A JP 2006134136 A JP2006134136 A JP 2006134136A JP 2004323548 A JP2004323548 A JP 2004323548A JP 2004323548 A JP2004323548 A JP 2004323548A JP 2006134136 A JP2006134136 A JP 2006134136A
Authority
JP
Japan
Prior art keywords
garbage collection
application
execution
storage area
unit
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.)
Granted
Application number
JP2004323548A
Other languages
English (en)
Other versions
JP4641176B2 (ja
Inventor
Shinji Maeda
慎司 前田
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2004323548A priority Critical patent/JP4641176B2/ja
Publication of JP2006134136A publication Critical patent/JP2006134136A/ja
Application granted granted Critical
Publication of JP4641176B2 publication Critical patent/JP4641176B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 アプリケーションにメモリ領域を効率的に割り当て、かつ、ガーベージコレクションの実行を効率的に行うアプリケーション処理装置を提供する。
【解決手段】 記憶部140は、データを記憶するメモリ領域を有する。メモリ管理部110は、記憶部140の有するメモリ領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムにメモリ領域を割り当てる。ガーベージコレクション実行対象選択部130は、メモリ管理部110がブロックを単位として記憶領域を割り当てたアプリケーションプログラムの中から、ガーベージコレクションを実行するアプリケーションプログラムを選択する。ガーベージコレクション実行部120は、ガーベージコレクション実行対象選択部130が選択したアプリケーションプログラムに対し、ブロックを対象としてガーベージコレクションを実行する。
【選択図】 図1

Description

この発明はアプリケーションを処理するアプリケーション処理装置において、ガーベージコレクションを実行するアプリケーション処理装置に関する。
従来、アプリケーションにメモリ領域を割り当てて実行するアプリケーション処理装置では、メモリの利用効率を高めるために、メモリ領域内に存在する不要になったデータを回収して空き領域とすることにより、メモリ領域を再利用可能とするガーベージコレクション技術がある。このガーベージコレクションの方法としては大きく分けて、(1)マーク・スイープ方式と、(2)参照カウント方式の2つがある。
マーク・スイープ方式には、マーク工程とスイープ工程がある。マーク工程では、アプリケーションが参照している全てのデータにマークを付ける。マークが付けられなかったデータを不要データとみなすことにより、メモリ領域のデータを必要データと不要データに分類する。
スイープ工程では、マークが付けられなかった不要データを破棄(回収)し、空き領域とする。空き領域は再利用可能な状態にするために、必要なデータを再配置して空き領域を一ヶ所に集める。あるいは、空き領域をリンクでつなげることにより、空き領域を連続したメモリ領域とする。
また、マーク・スイープ方式の応用として「世代別ガーベージコレクション」がある。「世代別ガーベージコレクション」は、一般的に生成されたデータの多くは短期間だけ必要とされるという特性を利用したものである。「世代別ガーベージコレクション」は、データの存在期間(世代)に注目し、新しいデータを新世代領域に割り当て、古いデータを旧世代領域に割り当て、新世代領域に対するガーベージコレクションを実行する頻度を高くし、全体的にガーベージコレクションの効率を向上させている。
参照カウント方式は、全てのデータについて被参照回数をカウントする。カウンタが「0」のデータはどこからも参照されていない不要データとみなすものである。不要データの回収については、マーク・スイープ方式と同様である(非特許文献1参照)。一般に、参照カウント方式はデータの参照関係の変更が発生する度にカウンタを変更する必要がある点、相互に参照している不要なデータを回収できない点等の問題がある。
複数のアプリケーションにメモリ領域を割り当ててアプリケーションを実行するアプリケーション処理装置では、メモリの利用効率を高めるために、メモリ領域内の不要データを回収し、再利用可能とする従来のガーベージコレクション技術を適用する。この適用の場合について、2つのアプリケーション1とアプリケーション2を実行中にアプリケーション1のガーベージコレクションを実行することを例に説明する。
図37に示すように、メモリ領域内にはアプリケーション1のデータであるアプリ1と、アプリケーション2のデータであるアプリ2とが混在している。従来のガーベージコレクションの実行方法として一般的なマーク・スイープ方式では、図38に示すように、ガーベージコレクション対象であるアプリケーション1の全ての必要データにマーク付けを完了した状態では、まだ、アプリケーション2の必要データにマーク付けがされていない。図38では、アプリケーション1の必要データは、だ円の実線で示している。このため、アプリケーション1の不要データを回収することができない。従って、メモリ領域内のデータが必要かどうかを判定するためには、メモリ領域を使用している全てのアプリケーションについて、マーク工程を実行しなければならない。図39は、アプリケーション1のデータと、アプリケーション2のデータが混在している場合に、メモリ領域を使用している両者のデータにマーク工程を実行した状態を示している。そのため、不要データを回収し空き領域を作る状態(図40の状態)にするまでに、膨大な時間を要することになる。
一方、アプリケーションが使用する全てのデータについて、どのアプリケーションが使用しているデータかを管理すれば1つのアプリケーションに対してのみガーベージコレクションを実行することも可能である。しかしながら、データ毎に管理する必要があるため、管理領域の肥大化と処理のオーバヘッドを生じる。また、アプリケーション処理装置において、複数のアプリケーションを実行する場合、あるアプリケーションに対するガーベージコレクションの実行によって、他のアプリケーションの実行が妨げられる可能性がある。
日比野靖:「ごみ集めの基本アルゴリズム」情報処理(情報処理学会学会誌)第35巻 第11号 1994年11月 p.992−999
本発明は、上記のような問題を解決し、アプリケーションにメモリ領域を効率的に割り当て、かつガーベージコレクションの実行を効率的に行うことを目的とする。
本発明のアプリケーション処理装置は、
アプリケーションプログラムのデータが自己の有する記憶領域を占有する場合に、記憶領域を占有するデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行するアプリケーション処理装置において、
データを記憶する記憶領域を有する記憶部と、
前記記憶部の有する記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる記憶領域管理部と、
前記記憶領域管理部がアプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行するガーベージコレクション実行部と
を備えたことを特徴とする。
本発明により、他のアプリケーションのメモリ使用状況に関係なく、1つのアプリケーションに対してガーベージコレクション処理を実行できる。このため短時間でガーベージコレクションを実行することができる。
実施の形態1.
図1〜図10を用いて実施の形態1について説明する。図1は、本実施の形態1のアプリケーション処理装置100のブロック図である。図2は、ブロック管理情報141を示す図である。図3は、アプリケーション処理装置100の動作を示すフローチャートである。図4は、アプリケーションの動作を示すフローチャートである。図5は、アプリケーション1を選択するフローチャートである。図6は、アプリケーション1に対するガーベージコレクションを説明するフローチャートである。図7は、ガーベージコレクション実行前のメモリ領域の状態を示す図である。図8は、不要データを回収した後のメモリ領域の状態を示す図である。図9は、ガーベージコレクション実行後のメモリ領域の状態を示す図である。図10は、本実施の形態1のアプリケーション処理装置101のブロック図である。
図1を用いて、アプリケーション処理装置100の構成を説明する。アプリケーション処理装置100は、例えば、携帯電話、携帯情報端末等である。
アプリケーション処理装置100は、記憶部140のメモリ領域(記憶領域)を管理するメモリ管理部110(記憶領域管理部の一例)、ガーベージコレクションを実行するガーベージコレクション実行部120、ガーベージコレクションの実行対象となるアプリケーションプログラムを選択するガーベージコレクション実行対象選択部130、及びメモリ領域を有する記憶部140を備える。また、記憶部140は、後述するブロック管理情報141を格納している。図2に示すブロック管理情報141は、メモリ管理部110が管理する。ブロック管理情報141の詳細は後述する。なお、実施の形態1〜実施の形態5のアプリケーション処理装置100〜アプリケーション処理装置500においては、同様の機能の構成要素には同じ符号を付し、説明を省略する。また、アプリケーションプログラムを単にアプリケーションという。また、ガーベージコレクションを「GC」と略記する場合がある。
次に、図3を用いて、アプリケーション処理装置100の動作を説明する。
(1)メモリ管理部110は、記憶部140のメモリ領域をブロックで分割し、ブロック管理情報141を初期化する(S101)。
(2)メモリ管理部110はアプリケーション処理装置100を終了する場合(S102のYes)は終了する。アプリケーション処理装置100を終了しない場合(S102のNo)、メモリ管理部110は、アプリケーションからブロックの要求があるかどうかを判定する(S103)。アプリケーションは、その実行中にデータ生成等によりメモリを消費する。このため、割り当てられているブロック(記憶領域)の空き領域が枯渇した場合や、空き領域が予め設定した閾値を下回った場合には、メモリ管理部110に新たなブロックをS103において要求する。
(3)アプリケーションからブロックの要求がない場合(S103のNo)、S102に戻る。
(4)アプリケーションからブロックの要求がある場合(S103のYes)、メモリ管理部110は、ブロック管理情報141を参照し、未使用ブロックがあるかどうかを判定する(S104)。
(5)未使用ブロックがある場合(S104のYes)、メモリ管理部110は、アプリケーションに未使用ブロックを割り当て(S110)、アプリケーションにブロックを割り当てたことをブロック管理情報141に登録する(S111)。
(6)未使用ブロックがない場合(S104のNo)、ガーベージコレクション実行対象選択部130は、ガーベージコレクションを実行する対象となるアプリケーションを選択する(S105)。
(7)ガーベージコレクション実行部120は、S105でガーベージコレクション実行対象選択部130により選択されたアプリケーションが使用するブロック内に存在するデータを必要データと不要データに振り分ける(S106)。
(8)ガーベージコレクション実行部120は、不要データを回収し空き領域とし(S107)、必要データ(残存データ)をアプリケーションに割り当てられたブロック内に再配置する(S108)。
(9)メモリ管理部110は、未使用ブロックが出来たことをブロック管理情報141に登録し(S109)、S104に戻る。
次に、図4を用いてアプリケーションの動作を説明する。
(1)アプリケーションが起動し(S201)、処理を開始する(S202)。
(2)データ生成等の新たにメモリを必要とする処理でない場合(S203のNo)、S202に戻る。
(3)アプリケーションは、データ生成等の新たにメモリを必要とする処理の場合(S203のYes)、アプリケーションに割り当てられたブロックに空き領域があるかどうかを判定する(S204)。
(4)空き領域がない場合(S204のNo)、メモリ管理部110にブロックを要求する(S205、図3のS103のyesに対応)。そして、アプリケーションは、図3のS103以降の過程によりブロックを取得し、データを取得したブロックに配置する(S206)。そして、アプリケーションは終了判定を行い(S207)、終了するか(S207のYes)、S202に戻る(S207のNo)。
次に、図2及び図5〜図9を用いてアプリケーション1に対するガーベージコレクションが実行される例を説明する。まず、図2について説明する。
(1)図2のブロック管理情報141は、メモリ管理部110がメモリ領域を6つのブロックに分割(S101に対応)した様子を示している。メモリ管理部110はアプリケーション1の起動時に、まずブロック1をアプリケーション1に割り当てる。
(2)また、メモリ管理部110はアプリケーション2の起動時に、ブロック2をアプリケーション2に割り当てる。
(3)その後、メモリ管理部110は、アプリケーション1とアプリケーション2の実行中に、アプリケーション1にブロック3、ブロック4、ブロック6を割り当て、アプリケーション2にブロック5を割り当てる(S110,S111に対応)。図2は、メモリ管理部110がブロックの割り当を「アプリケーション識別子」によって管理している様子を示している。例えば、図2において、「ブロック識別子」が1の場合に「アプリケーション識別子」が1とは、ブロック1をアプリケーション1が使用していることを示している。
(4)図7は、ガーベージコレクション実行前の記憶部140のメモリ領域の状態を示しており、図2のブロック管理情報141に対応している。図7において「アプリ1」とあるのはアプリケーション1用のデータであり、「アプリ2」とあるのはアプリケーション2用のデータであること示す(以下、図8、図9等の場合も同様)。上記のように、メモリ管理部110は、記憶部140の有するメモリ領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムにメモリ領域を割り当てる。従って、図7に示すように、一つのブロックには同じアプリケーションのデータが記憶されている。
次に図5を用いて、ガーベージコレクションの実行においてアプリケーション1を選択する場合を説明する。記憶部140は、図2及び図7に示す状態とする。
(1)図2のブロック管理情報141に示すように、未使用ブロックのない状態でアプリケーション1がメモリ管理部110にブロックを要求すると(S103のyes)、未使用ブロックが存在しないため、メモリ管理部110はアプリケーション1に対する未使用ブロックの割り当てに失敗する(S301、S302、S104のNOに対応)。
(2)ガーベージコレクション実行対象選択部130は、ガーベージコレクションを実行する対象としてアプリケーション1を選択する(S303、S105に対応)。
(3)そして、ガーベージコレクション実行部120が、アプリケーション1に対するガーベージコレクション処理を開始する(S304、S106〜S108に対応)。
次に、図6を用いて、ガーベージコレクション実行部120がアプリケーション1に対してガーベージコレクションを実行する動作を説明する。記憶部140は、図2及び図7に示す状態とする。図3のS106〜S108に対応する。
(1)ガーベージコレクション実行部120は、ブロック管理情報141を参照し、アプリケーション1に割り当てられている記憶部140のメモリ領域が、ブロック1、ブロック3、ブロック4、ブロック6であるという情報を得る(S401)。この情報から、ガーベージコレクション実行部120は、メモリ管理部110がアプリケーション1に割り当てた記憶領域を示すブロック1、ブロック3、ブロック4、ブロック6を対象として、ガーベージコレクションの実行を開始する。
(2)まず、ガーベージコレクション実行部120は、アプリケーション1がメモリ領域の各ブロックに配置しているデータが、必要データであるか不要データであるかを振り分ける。これにより、アプリケーション1の全ての必要データにはマークが付けられ、不要データにはマークが付けられていない状態となる(S402)。図8には、必要データとしてマークが付けられたデータを「アプリ1−1」〜「アプリ1−16」の16のデータとして示した。
(3)次に、ガーベージコレクション実行部120は、マークが付けられていないデータを不要データとして回収し、不要データが配置されていた領域を空き領域とする(S403)。図8は、不要データを回収した後のメモリ領域の状態を示している。図8において、「アプリ1−1」〜「アプリ1−16」の16個のデータが必要データとして残存する。「破線の空白」は、不要データが回収された空き領域を示している。
(4)最後に、ガーベージコレクション実行部120は、マークが付けられているデータを必要データとして再配置する(S404)。図9は、ガーベージコレクション実行後のメモリ領域の状態を示している。再配置の対象となるブロックは、アプリケーション1に割り当てられているメモリ領域であるブロック1、ブロック3、ブロック4、ブロック6である。図9では、図8に示した「アプリ1−1」〜「アプリ1−16」の必要データが、ガーベージコレクション実行部120により、ブロック1、ブロック2に再配置されている様子を示している。この結果、アプリケーション1のデータは、ブロック1とブロック3に再配置される。そして、ブロック4とブロック6には、アプリケーション1のデータが存在しない状態となる。
(5)ガーベージコレクション実行部120は、ブロック4とブロック6が空き領域になったことをメモリ管理部110に通知する(S405)。
(6)メモリ管理部110は、ブロック4とブロック6を未使用ブロックとしてブロック管理情報141に登録する。
(7)以上により、アプリケーション2のメモリ領域の使用状況に関係なく、アプリケーション1に対してガーベージコレクション処理を実行し、空き領域を作ることができる。
次に、図10を用いて、アプリケーション処理装置100にガーベージコレクション実行条件設定部150とガーベージコレクション実行条件判定部15とを追加した、アプリケーション処理装置101について説明する。図3では、アプリケーションがブロックを要求しているかどうかを判定(S103)することにより、ガーベージコレクションを実行するかどうか判定(S104)している。しかしながら、以下の(a)〜(c)のようなガーベージコレクションを実行する条件を予め設定し、より適切な時間にガーベージコレクションを実行させてもよい。
(a)未使用ブロックの残り数が予め設定した閾値を下回った場合に、そのガーベージコレクションを実行する。
(b)新たにアプリケーションが起動された場合に、ガーベージコレクションを実行する。
(c)実行中のアプリケーションが休眠した場合に、ガーベージコレクションを実行する。
このような場合に対応するアプリケーション処理装置101の構成を図10に示す。図10は、実施の形態1に係るアプリケーション処理装置101の構成を示す図である。アプリケーション処理装置101は、図1のアプリケーション処理装置100に対して、ガーベージコレクション実行条件設定部150(実行条件設定部)と、ガーベージコレクション実行条件判定部151(実行判定部)とを備えた構成である。
ガーベージコレクション実行条件設定部150は、ユーザからガーベージコレクションを実行する実行条件を受け付け、受け付けた実行条件を設定する。上記の例であれば、(a)未使用ブロック数の閾値、(b)アプリケーションの起動、(c)アプリケーションの休眠等の実行条件を受け付けて、受け付けた実行条件を設定する。ガーベージコレクション実行条件判定部151は、ガーベージコレクション実行条件設定部150が設定した実行条件に基づき、ガーベージコレクションを実行するかどうかを判定する。また、ガーベージコレクション実行部120は、ガーベージコレクション実行条件判定部151の判定結果に従って、ガーベージコレクションを実行する。
本実施の形態1のアプリケーション処理装置は、メモリ管理部110とガーベージコレクション実行部120を備えたので、他のアプリケーションのメモリ使用状況に関係なく、1つのアプリケーションに対してガーベージコレクション処理を実行できる。従って、全てのアプリケーションに対して同時にガーベージコレクションを実行するよりも短時間でガーベージコレクション処理を完了させ、メモリの空き領域を作ることができる。
また、本実施の形態1のアプリケーション処理装置は、メモリ管理部110がメモリ領域を複数のブロックに分割し、各アプリケーションが必要とするメモリ領域を割り当てているので、複数のアプリケーションで効率的にメモリ領域を使用することができる。
本実施の形態1のアプリケーション処理装置は、ガーベージコレクション実行条件設定部150がガーベージコレクションを実行する条件を予め設定するので、より適切な状況においてガーベージコレクションを実行することができる。
実施の形態2.
次に、図11〜15を用いて実施の形態2について説明する。図11は、実施の形態2のアプリケーション処理装置200のブロック図である。図12は、アプリケーション処理装置200のガーベージコレクション実行対象選択部130の動作を示すフローチャートである図13は、アプリケーションにブロックを割り当てた時刻を追加したブロック管理情報220を示す図である。図14は、アプリケーションにガーベージコレクションを実行した時刻を有するガーベージコレクション管理情報231を示す図である。図15は、GC許可フラグを追加したガーベージコレクション管理情報232を示す図である。
実施の形態2では、図11に示すアプリケーション処理装置200を説明する。アプリケーション処理装置200は、実施の形態1の図1に示したアプリケーション処理装置100に対して、さらに、アプリケーションプログラムの状態を管理するアプリケーション状態管理部210が追加されている。ガーベージコレクション実行対象選択部130は、アプリケーション状態管理部210が管理するアプリケーションプログラムの状態に基づいて、ガーベージコレクションを実行するべきアプリケーションプログラムを選択する。以下、アプリケーション処理装置200について説明する。
アプリケーション状態管理部210は、「アプリケーションの状態」を管理している。「アプリケーションの状態」を管理する一例として、まず、アプリケーションが実行状態から休眠状態に遷移するかどうかを管理する場合を状態管理タイプ1として説明し、さらに、別の例を状態管理タイプ2〜状態管理タイプ5として説明する。
(1)まず、状態管理タイプ1の場合を説明する。実施の形態1と同様にアプリケーション1とアプリケーション2が実行中とする。
(2)メモリ管理部110は、図7のように、アプリケーション1にブロック1、ブロック3、ブロック4、ブロック6を割り当て、アプリケーション2にブロック2、ブロック5を割り当てている状態とする。
(3)この状態において、ユーザの要求等によりアプリケーション1の実行を停止し、休眠状態に遷移させる場合を想定する。
(4)休眠状態へ遷移させる場合に、ガーベージコレクション実行対象選択部130が、アプリケーション状態管理部210の管理するアプリケーションの状態(遷移状態)に基づき、アプリケーション1をガーベージコレクション対象として選択し、ガーベージコレクションを実行する場合を説明する。
図12のフローチャートを用いて説明する。
(1)ガーベージコレクション実行対象選択部130には、ガーベージコレクション対象を選択する条件として、実行状態から休眠状態に遷移するアプリケーションを予め設定しておく(S501)。
(2)アプリケーション状態管理部210は、実行中のアプリケーションの状態を監視し、実行中のアプリケーションが休眠状態に遷移するのを待つ(S502)。
(3)ユーザの要求等によりアプリケーション1の実行が停止され、アプリケーション1が休眠状態すると、アプリケーション状態管理部210は、監視の結果、アプリケーション1が実行中から休眠に遷移したことを確認する。そして、アプリケーション状態管理部210は、休眠に遷移したことをガーベージコレクション実行対象選択部130に通知する(S503)。
(4)ガーベージコレクション実行対象選択部130は、この通知を受けることにより、アプリケーション1がガーベージコレクション対象アプリケーションとして選択される条件に適合したことを検知する。そして、ガーベージコレクション実行対象選択部130は、アプリケーション1をガーベージコレクション対象アプリケーションとして選択する(S504)。
(5)ガーベージコレクション実行対象選択部130は、ガーベージコレクション実行部120にアプリケーション1に対するガーベージコレクション実行を要求する(S505)。
(6)ガーベージコレクション実行部120は、アプリケーション1に対して、記憶領域である各ブロックを対象にガーベージコレクションを実行する。
実施の形態2のアプリケーション処理装置200はアプリケーション状態管理部210を備えたので、アプリケーション1が実行状態から休眠状態に「遷移」した場合に、アプリケーション1に対するガーベージコレクション処理が実行される。このため、アプリケーション1が完全に休眠する前に、アプリケーション1の使用するメモリ領域を解放して、他の実行状態のアプリケーションに多くのメモリ領域を割り当てることができる。
状態管理タイプ1では、アプリケーションが実行状態から休眠状態へと遷移する状態を管理して、ガーベージコレクションを実行する場合について説明した。これは一例であり、ガーベージコレクション対象として、以下のような状態管理タイプ2〜状態管理タイプ5の場合にアプリケーションを選択するように設定してもよい。以下に状態管理タイプ2〜状態管理タイプ5の場合を説明する。
次に、状態管理タイプ2の場合を示す。状態管理タイプ1では、アプリケーション状態管理部210が、アプリケーションが実行中から休眠に遷移するかどうかを管理した。状態管理タイプ2では、アプリケーション状態管理部210は、休眠への遷移が既に終了した休眠中のアプリケーションを管理する。状態管理タイプ1の場合においてアプリケーションの実行から休眠への遷移が他のアプリケーションを起動する処理と重なる場合、他のアプリケーションの起動処理を優先させるために、アプリケーションの休眠への遷移時にガーベージコレクション処理を行わない方がよい場合もある。この場合は休眠への遷移時にガーベージコレクションを実行しないので、すでに休眠中のアプリケーションは、多くのメモリ領域を使用したままの状態となる。そのため、下記の動作とする。
(1)アプリケーション状態管理部210は、「アプリケーションの状態」として、すでに休眠中のアプリケーションが存在するかを監視し、休眠中のアプリケーションをガーベージコレクション実行対象選択部130に通知する。
(2)ガーベージコレクション実行対象選択部130は、休眠中のアプリケーションをガーベージコレクション対象として選択するように予め設定されている。ガーベージコレクション実行対象選択部130は、アプリケーション状態管理部210からの通知により、該当するアプリケーションを選択する。
(3)ガーベージコレクション実行部120は、ガーベージコレクション実行対象選択部130が選択したアプリケーションに対してガーベージコレクションを実行する。
(4)以上の状態管理タイプ2により、メモリ領域の枯渇等が原因となりガーベージコレクションが必要になった場合に、休眠中のアプリケーションをガーベージコレクション対象として選択させ、空き領域を作ることができる。また、これにより、実行中のアプリケーションのメモリ利用に影響を与えることなく、ガーベージコレクションを実行することができる。
次に、状態管理タイプ3の場合を示す。状態管理タイプ3ではアプリケーション状態管理部210が、アプリケーションに割り当てられているメモリ領域の大きさを管理する。アプリケーションに割り当てられているメモリ領域の量に大きな差がある場合、多くのメモリ領域が割り当てられているアプリケーションに対してガーベージコレクションを実行した方が、ガーベージコレクションによるメモリの空き領域が大きいと考えられる。そのため、下記の動作とする。
(1)アプリケーション状態管理部210は、「アプリケーションの状態」として、アプリケーションに割り当てられているメモリ領域の大きさを監視し、メモリ領域の多いアプリケーションをガーベージコレクション実行対象選択部130に通知する。
(2)ガーベージコレクション実行対象選択部130は、割り当てられているメモリ領域の多いアプリケーションをガーベージコレクション対象として選択するように予め設定されている。ガーベージコレクション実行対象選択部130は、アプリケーション状態管理部210からの通知により、該当するアプリケーションを選択する。
(3)ガーベージコレクション実行部120は、ガーベージコレクション実行対象選択部130が選択したアプリケーションに対してガーベージコレクションを実行する。
(4)以上の状態管理タイプ3により、メモリ領域の枯渇等が原因となりガーベージコレクションが必要になった場合に、多くのメモリ領域を使用しているアプリケーションをガーベージコレクション対象として選択し、空き領域を作ることができる。これにより少数のアプリケーションに対するガーベージコレクションの処理により、効率的にメモリの空き領域を作ることができる。
次に、状態管理タイプ4の場合を示す。状態管理タイプ4では、アプリケーション状態管理部210は、アプリケーションにブロックを割り当てた時刻を管理する。新しく生成されたデータは、古くから生成されたデータよりも短時間で不要となりやすい。このため、新しく生成されたデータは、ガーベージコレクションによって不要データとして回収される確率が高い。この特性を利用してガーベージコレクションの対象となるアプリケーションを選択する。
(1)メモリ管理部110は図13に示すように、ブロック管理情報220において、メモリ管理部110がアプリケーションにブロックを割り当てた「ブロック割当時刻」を記録する。
(2)アプリケーション状態管理部210は、「アプリケーションの状態」として、ブロック管理情報220に記録された「ブロック割当時刻」を監視し、「ブロック割当時刻」が新しいアプリケーションをガーベージコレクション実行対象選択部130に通知する。図13では、ブロック4が一番新しく割り当てられたブロックである。よって、アプリケーション状態管理部210は、アプリケーション1の「ブロック割当時刻」が一番新しいことをガーベージコレクション実行対象選択部130に通知する。
(3)ガーベージコレクション実行対象選択部130は、「ブロック割当時刻」が新しいアプリケーションをガーベージコレクション対象として選択するように予め設定されている。ガーベージコレクション実行対象選択部130は、アプリケーション状態管理部210からの通知により、該当するアプリケーション1を選択する。
(4)以上の状態管理タイプ4により、メモリ領域の枯渇等が原因となりガーベージコレクションが必要になった場合に、新しいデータを多く含むアプリケーションをガーベージコレクション対象として選択させ、空き領域を作ることができる。このため、少数のアプリケーションに対するガーベージコレクションの処理により、効率的に空き領域を作ることができる。
次に、状態管理タイプ5の場合を示す。状態管理タイプ5では、アプリケーション状態管理部210は、アプリケーションにガーベージコレクションを実行した時刻を管理する。前回のガーベージコレクションを実行してから長時間経過したアプリケーションには、多くの不要データが存在していると考えられる。従って、状態管理タイプ5では、前回のGC実行時刻から最も時間の経過しているアプリケーションを選択する。
(1)アプリケーション状態管理部210は、図14に示すような、アプリケーションに対するガーベージコレクション処理の実行時刻が登録されているガーベージコレクション管理情報231を備えている。ガーベージコレクション実行部120は、ガーベージコレクションを実行した場合に、アプリケーションごとにそのGC実行時刻をガーベージコレクション管理情報231に登録する。
(2)アプリケーション状態管理部210は、「アプリケーションの状態」として、ガーベージコレクション管理情報231に登録された「GC実行時刻」を監視し、前回の「GC実行時刻」のより古いアプリケーションをガーベージコレクション実行対象選択部130に通知する。図14では、アプリケーション1が前回のGC実行から最も時間が経過している。よって、アプリケーション状態管理部210は、アプリケーション1の「GC実行時刻」が最も古いことをガーベージコレクション実行対象選択部130に通知する。
(3)ガーベージコレクション実行対象選択部130は、前回ガーベージコレクションを実行した時刻が古いアプリケーションをガーベージコレクション実行対象として選択するように予め設定されている。ガーベージコレクション実行対象選択部130は、アプリケーション状態管理部210からの通知により、該当するアプリケーション1を選択する。
(4)以上の状態管理タイプ5により、メモリ領域の枯渇等が原因となりガーベージコレクションが必要になった場合に、不要なデータを多く含むアプリケーションをガーベージコレクション対象として選択させ、空き領域を作ることができる。
(5)以上のように、GC実行時刻をガーベージコレクション管理情報231に登録することにより、次回にガーベージコレクション実行対象選択部130がガーベージコレクション対象を選択する場合に、前回のガーベージコレクションから最も時間が経過しているアプリケーションを選択することができる。これにより少数のアプリケーションに対するガーベージコレクションの処理により、効率的に空き領域を作ることができる。
(6)また、アプリケーションによっては、できるだけガーベージコレクションを実行させたくない場合も存在する。そこで、図15に示すように、ガーベージコレクション管理情報232に、さらに「GC許可フラグ」を付加し、アプリケーション状態管理部210は「GC許可フラグ」が「GC許可」のアプリケーションだけを通知するようにしてもよい。
また、上記のような状態管理タイプ1〜状態管理タイプ5について、アプリケーション状態管理部210がガーベージコレクション対象を通知する複数の条件に優先順位を付けて予め設定することにより、これらの条件の組み合わせでガーベージコレクション対象となるアプリケーションを選択するようにしてもよい。
実施の形態3.
次に、図16、図17を用いて実施の形態3について説明する。図16は、実施の形態3のアプリケーション処理装置300のブロック図である。図17は、低速メモリへのデータの移動を示す図である。実施の形態3は、実施の形態1のアプリケーション処理装置100に対して、さらに、記憶部140とは異なる低速メモリ310(第2記憶部の一例)を備えたアプリケーション処理装置200に関する。ガーベージコレクション実行後に必要データとして残存するデータを低速メモリ310に移動する実施形態である。この低速メモリ310は、記憶部140よりもアクセス速度が遅い。
次に、低速メモリ310へのデータの移動動作を説明する。
(1)実施の形態2の状態管理タイプ1の場合と同様に、アプリケーション1とアプリケーション2が実行中であるとする。図2、図7の場合と同様に、メモリ管理部110は、アプリケーション1に対してブロック1、ブロック3、ブロック4、ブロック6を割り当て、アプリケーション2に対してブロック2、ブロック5を割り当てている状態である。
(2)この状態において、実施の形態2の状態管理タイプ1の場合と同様に、ユーザの要求等によりアプリケーション1の実行を停止し、休眠状態へと遷移させる。この場合に、ガーベージコレクション実行対象選択部130が休眠へと遷移するアプリケーション1をガーベージコレクション対象として選択し、ガーベージコレクション実行部120によりガーベージコレクションを実行する。アプリケーション1のガーベージコレクションが完了すると、図9と同様に、アプリケーション1のデータは、ブロック1とブロック3だけに存在する状態となる(「アプリ1−1」〜「アプリ1−16」)。
(3)ガーベージコレクション実行後、メモリ管理部110は、図17に示すように、ブロック1とブロック3の残存データ(「アプリ1−1」〜「アプリ1−16」)を低速メモリ310に転送(移動)する。この結果、図17の記憶部140のブロック1、ブロック3は空き領域になる。
(4)そして、メモリ管理部110は、ブロック1とブロック3を未使用ブロックとしてブロック管理情報141に登録する。
実施の形態3のアプリケーション処理装置300は低速メモリ310を備えたので、アプリケーション1が使用していた全てのブロックが未使用ブロックとなる。このため、他のアプリケーションを実行する際に、多くのメモリ領域を割り当てることができる。
実施の形態4.
次に、図18〜図20を用いて実施の形態4を説明する。図18は、実施の形態4のアプリケーション処理装置400のブロック図である。図19は、アプリケーション状態管理情報421を示す図である。図20は、アプリケーション状態管理情報422を示す図である。
実施の形態4は、ガーベージコレクションの実行時間を制御する実施形態である。図18のアプリケーション処理装置400は、実施の形態2のアプリケーション処理装置200に対して、さらに、ガーベージコレクション実行部120の実行時間を制御するガーベージコレクション実行制御部410(実行時間制御部の一例)を備えた構成である。
図19は、アプリケーション状態管理部210が備え、管理する「アプリケーション状態管理情報421」である。アプリケーション状態管理情報421には、各アプリケーションごとに予め設定された「実行停止許容期間」が登録されている。「実行停止許容期間」は、各アプリケーションについて実行停止を許容できる期間である。ガーベージコレクション実行制御部410は上記「実行停止許容期間」の情報に基づき、ガーベージコレクションの実行によりアプリケーション実行の停止期間が「実行停止許容期間」を超えないようにガーベージコレクション実行部120の実行時間を制御する。ガーベージコレクション実行制御部410は、断続的にガーベージコレクションを実行するように、ガーベージコレクション実行部120のガーベージコレクション実行時間を制御する。
また、図20は、アプリケーション状態管理部210が備え、管理する「アプリケーション状態管理情報422」である。「アプリケーション状態管理情報422」には、各アプリケーションのガーベージコレクションの「GC実行時刻」と、ガーベージコレクションの「GC実行間隔」とが登録されている。ガーベージコレクション実行制御部410は、上記の「GC実行時刻」と「GC実行間隔」の情報に基づき、「GC実行間隔」よりも時間が経過しているアプリケーションが存在するかどうかを定期的にチェックする。ガーベージコレクション実行制御部410は、前記チェック結果に基づき、ガーベージコレクション実行部120のガーベージコレクション実行時間を制御する。
以上のように、実施の形態4のアプリケーション処理装置400はガーベージコレクション実行制御部410を備えたので、長時間ガーベージコレクションが実行されないアプリケーションをチェックすることにより、1回のガーベージコレクション処理時間が長時間にわたるアプリケーションの発生を防止することができる。
実施の形態5.
次に、図21〜図33を用いて実施の形態5について説明する。図21は、実施の形態5のアプリケーション処理装置500の構成図である。図22は、アプリケーション1とアプリケーション2へのブロックの割り当て状況を示す図である。図23は、1回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。図24は、1回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。図25は、2回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。図26は、2回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。図27は、3回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。図28は、3回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。図29は、旧世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。図30は、旧世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。図31は、1回目の新世代ガーベージコレクションの実行のフローチャートである。図32は、2回目の新世代ガーベージコレクションの実行のフローチャートである。図33は、旧世代ガーベージコレクションの実行のフローチャートである。
実施の形態5は、世代別ガーベージコレクションを実施する形態である。実施の形態5では、図21に示す通り、図1のアプリケーション処理装置100におけるガーベージコレクション実行部120が、世代別ガーベージコレクション実行部510に変更されている。世代別ガーベージコレクション実行部510は、ガーベージコレクションを実行した後に回収されずに残存する必要データ(残存データ)を、ガーベージコレクションの実行を受けた回数に基づいて2以上の世代に分類する。そして、分類した世代ごとにガーベージコレクションを実行する。図22は、アプリケーション1、アプリケーション2のデータが、ブロックごとに新世代領域と旧世代領域とに分類されている状態を示している。
図23に示すように、メモリ管理部110は、アプリケーション1にブロック1、ブロック2を割り当てている。図23において、ブロック1の新世代領域は、「データ生成領域」、「データ移動元領域」、「データ移動先領域」の3つの領域に分けられている。
(1)「データ生成領域」は、アプリケーションが新たに生成したデータを配置する領域である。
(2)「データ移動元領域」は、新世代ガーベージコレクションを実行する際に、データの移動元となる領域である。
(3)「データ移動先領域」は、新世代ガーベージコレクションを実行する際に、データの移動先となる領域である。
「データ移動元領域」と「データ移動先領域」は、世代別ガーベージコレクション実行部510が新世代ガーベージコレクションを実行した後は役割が入れ替わる。「データ移動元領域」は「データ移動先領域」になり、「データ移動先領域」は「データ移動元領域」になる。詳細は後述する。
次に動作について説明する。まず、図31を用いて、アプリケーション1に1回目の新世代ガーベージコレクションを掛ける動作について説明する。
(1)アプリケーション1が実行中にデータを生成し、新世代領域内の「データ生成領域」を使い切るとする。図23は、「データ生成領域」を使い切った場合を示している。「データ生成領域」を使い切ると、世代別ガーベージコレクション実行部510は、アプリケーション1に対して1回目の新世代ガーベージコレクションの実行を開始する(S601)。
(2)世代別ガーベージコレクション実行部510は、ブロック管理情報を参照し、アプリケーション1の新世代領域がブロック1であるという情報を得る(S602)。
(3)世代別ガーベージコレクション実行部510は、新世代領域の「データ生成領域内」に存在するデータを、必要データと不要データに振り分ける(S603)。
(4)世代別ガーベージコレクション実行部510は、図24に示すように、必要データを「データ移動先領域」に再配置する一方、不要データを回収し空き領域として解放する。この結果、「データ生成領域内」の全ての必要データは「データ移動先領域」に再配置される。この結果、「データ生成領域」と「データ移動元領域」は空き領域となる(S604)。
(5)世代別ガーベージコレクション実行部510は、「データ移動先領域」に再配置したデータの年齢を1歳増加させる(S605)。図24では、1歳増加させた年齢を「(1)」と記載している。
(6)世代別ガーベージコレクション実行部510は、「データ移動先領域」を「データ移動元領域」に名称変更し、「データ移動元領域」を「データ移動先領域」に名称変更し、1回目の新世代ガーベージコレクションの処理を完了する(S606)。図24は、1回目の新世代ガーベージコレクションが終了した状態を示している。なお、図24は「データ移動先領域」と「データ移動元領域」との名称を変更する前の状態を示している。
次に、図32を用いてアプリケーション1に2回目の新世代ガーベージコレクションを掛ける動作について説明する。アプリケーション1が実行中にさらにデータを生成し、再び新世代領域内の「データ生成領域」を使い切る。図25は、再び新世代領域内の「データ生成領域」を使い切った場合を示している。図25は図24に対して「データ移動先領域」と「データ移動元領域」との名称を変更した後の状態を示している。
(1)再び新世代領域内の「データ生成領域」を使い切ると、世代別ガーベージコレクション実行部510は、アプリケーション1に対して、2回目の新世代ガーベージコレクションを実行する(S701)。
(2)世代別ガーベージコレクション実行部510は、ブロック管理情報を参照し、アプリケーション1の新世代領域がブロック1であるという情報を得る(S702)。
(3)世代別ガーベージコレクション実行部510は、新世代領域の「データ生成領域内」に存在するデータ、及び「データ移動元領域内」に存在する年齢が「1歳」のデータについて、必要データと不要データに振り分ける(S703)。このように「データ移動元領域内」に存在するデータについても必要データ、不要データにデータを振り分ける点が、1回目の新世代ガーベージコレクションと相違している。
(4)世代別ガーベージコレクション実行部510は、図26に示すように、必要データを「データ移動先領域」に再配置する一方、不要データを回収して空き領域として解放する。なお図26では、この2回目の新世代ガーベージコレクションにおいて、「データ移動先領域」と「データ移動元領域」との名称を変更する「前」の状態を示している。最終的に全ての必要データは図26に示す「データ移動先領域」に再配置され、「データ生成領域」と「データ移動元領域」は空き領域となる(S704)。
(5)世代別ガーベージコレクション実行部510は、「データ移動先領域」に再配置されたデータの年齢を1歳増加させる(S705)。すなわち、「データ生成領域」から「データ移動先領域」に再配置されたデータは年齢が「1歳」となり、図26に「アプリ1(1)」と示している。また、「データ移動元領域」から「データ移動先領域」に再配置されたデータは、年齢が「2歳」となり、図26に「アプリ1(2)」と示している。
(6)世代別ガーベージコレクション実行部510は、「データ移動先領域」をデータ移動元領域に名称変更し、「データ移動元領域」を「データ移動先領域」に名称変更し、2回目の新世代ガーベージコレクションの処理を完了する(S706)。
新世代ガーベージコレクションを繰り返すことにより、必要データとして残存し続けたデータの年齢が予め設定した閾値を超えた場合、そのデータは、「旧世代データ」となる。一例として、3回目のGC実行前を示す図27において、年齢が「2歳」であるデータを示す「アプリ1(2)」は「旧世代データ」の候補であるとする。この場合、3回目のGCを実行すると、3回目のGC実行後を示す図28のように、世代別ガーベージコレクション実行部510は3回目の新世代ガーベージコレクションにおいて、「旧世代データ」候補である「アプリ1(2)」を再配置する際には(再配置により年齢は3歳になる)、「データ移動先領域」ではなく、ブロック2の「旧世代領域」に再配置する。このように、世代別ガーベージコレクション実行部510は、ガーベージコレクションを実行した後に回収されずに必要データとして残存し続ける残存データを、ガーベージコレクションの実行を受けた回数(この例では年齢)に基づいて2以上の世代に分類する。世代別ガーベージコレクション実行部510は、データを世代に分類することにより、分類した世代ごとに、ガーベージコレクションを実行するができる。
次に、図33のフローチャートを用いてアプリケーション1に旧世代ガーベージコレクションを掛ける動作について説明する。
(1)図29に示すように、旧世代データがブロック2の「旧世代領域内」のデータ生成領域を使い切ると、世代別ガーベージコレクション実行部510は、アプリケーション1に対して、旧世代のブロックのブロックを対象として、旧世代ガーベージコレクションを実行する(S801)。
(2)世代別ガーベージコレクション実行部510は、ブロック管理情報を参照し、アプリケーション1の旧世代領域が「ブロック2」であるという情報を得る(S802)。
(3)世代別ガーベージコレクション実行部510は、ブロック2における「旧世代領域」のデータ生成領域内に存在するデータについて、必要データと不要データに振り分ける(S803)。
(4)世代別ガーベージコレクション実行部510は、図30に示すように、不要データを回収して空き領域として解放した後、必要データをブロック2の「旧世代領域内」で再配置し、旧世代ガーベージコレクションの処理を完了する(S804)。
実施の形態5のアプリケーション処理装置500は、世代別ガーベージコレクション実行部510を備えたので、他のアプリケーションのメモリ使用状況に関係なく、1つのアプリケーションに対して世代別ガーベージコレクション処理を実行できる。このため、全てのアプリケーションに対してガーベージコレクションを実行するよりも短時間でガーベージコレクションを完了させることができる。加えて、世代別ガーベージコレクションを使用することにより、1つのアプリケーションに対するガーベージコレクション処理の時間を短時間で実行し、空き領域を作ることができる。
なお、本実施の形態では新世代領域と旧世代領域にそれぞれ1ブロックずつ割り当てる例を示したが、1つのブロックに新世代領域と旧世代領域の両方を割り当ててもよいし、新世代領域、あるいは旧世代領域を複数のブロックにまたがって割り当ててもよい。アプリケーションごとにブロックが異なれば構わない。そして、世代ごとにデータを分類し、分類した世代ごとにガーベージコレクションを実行できればよい。
実施の形態6.
次に、図34〜図36を用いて実施の形態6を説明する。実施の形態6は、実施の形態1のアプリケーション処理装置100の動作を、方法、プログラム及びプログラムを記録した記録媒体により実施する実施形態である。
前記の実施の形態1においては、アプリケーション処理装置100における各構成要素の動作は、互いに関連しており、動作の関連を考慮しながら、一連の動作として置き換えることができる。そして、このように構成要素の動作を一連の工程に置き換えることにより、ガーベージコレクション実行方法、記憶領域管理方法の実施形態とすることができる。
図34は、実施の形態1のアプリケーション処理装置100におけるメモリ管理部110の動作、及びガーベージコレクション実行部120の動作を工程に置き換えて、ガーベージコレクション実行方法としたフローチャートである。
(1)S801において、記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる。
(2)S802において、アプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行する。
図35は、実施の形態1のアプリケーション処理装置100におけるメモリ管理部110の動作、及びガーベージコレクション実行対象選択部130の動作を工程に置き換えて、記憶領域管理方法としたフローチャートである。
(1)S901において、記憶領域を複数のブロックに分割し、分割したブロックを単位として複数のアプリケーションプログラムに記憶領域を割り当てる。
(2)S902において、記憶領域を占有するアプリケーションプログラムのデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行する場合に、ブロックを単位として記憶領域を割り当てた複数のアプリケーションプログラムの中からガーベージコレクションを実行するアプリケーションプログラムを選択する。
また、図34のS801、S802の工程を一連の処理と置き換えることにより、
ガーベージコレクション実行プログラムの実施形態とすることができる。また、ガーベージコレクション実行プログラムをコンピュータ読み取り可能な記録媒体に記録させることで、ガーベージコレクション実行プログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態とすることができる。図35に工程を示した記憶領域管理方法についても同様である。
プログラムの実施の形態及びプログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態は、すべてコンピュータで動作可能なプログラムにより構成することができる。
図36は、実施の形態1のアプリケーション処理装置100の動作を、プログラムにより実行するアプリケーション処理装置600の構成を示す。アプリケーション処理装置600は、例えば、携帯電話である。
CPU(Central Processing Unit)610は、バス620を介して、例えば液晶画面である表示部630、例えば操作キーからなる操作部640、通信部650、RAM(Random Access Memory)660、ROM(Read Only Memory)670、記憶装置680等が接続されている。記憶装置680には、オペレーティングシステムであるOS681、プログラム群682、ファイル群683が格納されている。アプリケーション処理装置100の記憶部140は、RAM660が対応するものとする。アプリケーション1、アプリケーション2等のアプリケーションは、記憶装置680のプログラム群682に格納されている。及び、ガーベージコレクション実行プログラム、記憶領域管理プログラムもプログラム群682に格納されている。格納されるガーベージコレクション実行プログラム、記憶領域管理プログラムは、記憶部140に対応するRAM660のメモリ領域をブロックに分割し、分割したブロックを単位としてメモリ領域をアプリケーションに割り当てる。ファイル群には、例えば、ガーベージコレクション管理情報やアプリケーション状態管理情報が格納されている。
プログラムの実施の形態及びプログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態における各処理は、プログラムで実行されるが、このプログラムは、上記のように記憶装置680に記憶されている。そして、記憶装置680からCPU610に読み込まれ、CPU610によって、プログラムの各処理が実行される。
また、ソフトウェア、あるいはプログラムは、ROM670に記憶されたファームウェアで実行しても構わない。あるいは、ソフトウェアとファームウェアとハードウェアの組み合わせで実行しても構わない。
実施の形態6のガーベージコレクション実行方法は、メモリ領域(記憶領域)を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムにメモリ領域を割り当てる工程と、割り当てたメモリ領域を示すブロックを対象としてガーベージコレクションを実行する工程とを備えたので、他のアプリケーション(設例ではアプリケーション2)のメモリ領域の使用状況に関係なく、そのアプリケーション(設例ではアプリケーション1)のガーベージコレクションを実行できる。
実施の形態6の記憶領域管理方法は、メモリ領域(記憶領域)を複数のブロックに分割し、分割したブロックを単位として複数のアプリケーションプログラムにメモリ領域を割り当てる工程と、ガーベージコレクションを実行する場合に、ブロックを単位として記憶領域を割り当てた複数のアプリケーションプログラムの中からガーベージコレクションを実行するアプリケーションプログラムを選択する工程とを備えたので、第2のアプリケーション2のデータが必要か不要かを判定することなく、第1のアプリケーション1を選択してガーベージコレクションを実行することができる。
実施の形態6のガーベージコレクション実行プログラムは、メモリ領域(記憶領域)を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムにメモリ領域を割り当てる処理と、アプリケーションプログラムに割り当てたメモリ領域を示すブロックを対象としてガーベージコレクションを実行する処理とをコンピュータに実行させるので、他のアプリケーション(アプリケーション2)のメモリ領域の使用状況に関係なく、そのアプリケーション(アプリケーション1)のガーベージコレクションを実行できる。
以上、実施の形態のアプリケーション処理装置は、複数のアプリケーションにメモリ領域を割り当てて実行するアプリケーション処理装置であって、メモリ領域をブロックに分割して管理するメモリ管理部110、メモリ領域に記憶された不要なデータを削除し、再利用可能にするガーベージコレクション実行部120、ガーベージコレクションを実行する対象となるアプリケーションを選択するガーベージコレクション実行対象選択部130とを備え、メモリ管理部110は、アプリケーションに新たなメモリ領域を割り当てる場合に、アプリケーションにブロックを割り当て、アプリケーションにブロックを割り当てたことをアプリケーション識別子を用いて管理し、ガーベージコレクション実行対象選択部130は、メモリ管理部110が管理するブロックを割り当てられたアプリケーションの中から1つ以上のアプリケーションをガーベージコレクションを実行する対象として選択し、前記ガーベージコレクション実行部120は、ガーベージコレクション実行対象選択部130が選択したアプリケーションについて、ガーベージコレクションを実行することを特徴とする。
以上、実施の形態のアプリケーション処理装置は、アプリケーションの状態を管理するアプリケーション状態管理部210を備え、ガーベージコレクション実行対象選択部130は、アプリケーション状態管理部210が管理するアプリケーションの状態に基づき、ガーベージコレクションを実行する対象とするアプリケーションを選択することを特徴とする。
以上、実施の形態のアプリケーション処理装置は、ガーベージコレクションの実行条件を設定するガーベージコレクション実行条件設定部150と、ガーベージコレクション実行条件設定部150によって設定された条件を判定するガーベージコレクション実行条件判定部151を備え、前記ガーベージコレクション実行部120は、ガーベージコレクション実行条件判定部151によりガーベージコレクションを実行すると判定された場合に、ガーベージコレクションを実行することを特徴とする。
以上、実施の形態のアプリケーション処理装置は、通常のメモリ領域よりもアクセス速度の遅い低速メモリ310を備え、メモリ管理部110は、ガーベージコレクション実行部120によりガーベージコレクションを実行されたアプリケーションについて、アプリケーションが使用するブロックのデータを低速メモリ310に退避し、前記ブロックをアプリケーションに割り当てない未使用ブロックとすることを特徴とする。
以上、実施の形態のアプリケーション処理装置は、ガーベージコレクションの実行時間を制御するガーベージコレクション実行制御部410を備え、ガーベージコレクション実行制御部410は、アプリケーション状態管理部210が管理する情報に基づき、ガーベージコレクション実行部120によるガーベージコレクションの実行を制御することを特徴とする。
以上、実施の形態のアプリケーション処理装置は、ガーベージコレクション実行部120は、世代別ガーベージコレクションを実行する世代別ガーベージコレクション実行部510であることを特徴とする。
以上、実施の形態のメモリ管理方法(記憶領域管理方法)は、複数のアプリケーションにメモリ領域を割り当てて実行するアプリケーション処理装置におけるメモリ管理方法であって、メモリ領域をブロックに分割し、アプリケーションに新たなメモリ領域を割り当てる場合に、アプリケーションにブロックを割り当て、アプリケーションにブロックを割り当てたことをアプリケーション識別子を用いて管理し、メモリ領域に記憶された不要なデータを削除し、再利用可能にするガーベージコレクションを実行する際に、ブロックを割り当てられたアプリケーションの中からガーベージコレクションを実行する対象として選択することを特徴とする。
以上、実施の形態のガーベージコレクション実行方法は、複数のアプリケーションにメモリ領域を割り当てて実行するアプリケーション処理装置におけるガーベージコレクション実行方法であって、メモリ領域をブロックに分割し、アプリケーションに新たなメモリ領域を割り当てる場合に、アプリケーションにブロックを割り当て、アプリケーションにブロックを割り当てたことをアプリケーション識別子を用いて管理し、メモリ領域に記憶された不要なデータを削除し、再利用可能にするガーベージコレクションを実行する際に、ブロックを割り当てられたアプリケーションの中からガーベージコレクションを実行する対象として選択し、選択されたアプリケーションについてガーベージコレクションを実行することを特徴とする。
実施の形態1における、アプリケーション処理装置100のブロック図である。 実施の形態1における、ブロック管理情報141を示す図である。 実施の形態1における、アプリケーション処理装置100の動作を示すフローチャートである。 実施の形態1における、アプリケーションの動作を示すフローチャートである。 実施の形態1における、アプリケーション1を選択するフローチャートである。 実施の形態1における、アプリケーション1に対するガーベージコレクションを説明するフローチャートである。 実施の形態1における、ガーベージコレクション実行前のメモリ領域の状態を示す図である。 実施の形態1における、不要データを回収した後のメモリ領域の状態を示す図である。 実施の形態1における、ガーベージコレクション実行後のメモリ領域の状態を示す図である。 実施の形態1における、アプリケーション処理装置101のブロック図である。 実施の形態2における、アプリケーション処理装置200のブロック図である。 実施の形態2における、アプリケーション処理装置200のガーベージコレクション実行対象選択部130の動作を示すフローチャートである。 実施の形態2における、アプリケーションにブロックを割り当てた時刻を追加したブロック管理情報220を示す図である。 実施の形態2における、アプリケーションにガーベージコレクションを実行した時刻を有するガーベージコレクション管理情報231を示す図である。 実施の形態2における、GC許可フラグを追加したガーベージコレクション管理情報232を示す図である。 実施の形態3における、アプリケーション処理装置300のブロック図である。 実施の形態3における、低速メモリ310へのデータの移動を示す図である。 実施の形態4における、アプリケーション処理装置400のブロック図である。 実施の形態4における、アプリケーション状態管理情報421を示す図である。 実施の形態4における、アプリケーション状態管理情報422を示す図である。 実施の形態5における、アプリケーション処理装置500のブロック図である。 実施の形態5における、アプリケーション1とアプリケーション2へのブロックの割り当て状況を示す図である。 実施の形態5における、1回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。 実施の形態5における、1回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。 実施の形態5における、2回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。 実施の形態5における、2回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。 実施の形態5における、3回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。 実施の形態5における、3回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。 実施の形態5における、旧世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。 実施の形態5における、旧世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。 実施の形態5における、1回目の新世代ガーベージコレクションのフローチャートである。 実施の形態5における、2回目の新世代ガーベージコレクションのフローチャートである。 実施の形態5における、旧世代ガーベージコレクションのフローチャートである。 実施の形態6における、ガーベージコレクション実行方法の工程を示すフローチャートである。 実施の形態6における、記憶領域管理方法の工程を示すフローチャートである。 実施の形態6における、アプリケーション処理装置600のブロック図である。 従来のメモリ領域を示す図である。 従来のメモリ領域を示す図である。 従来のメモリ領域を示す図である。 従来のメモリ領域を示す図である。
符号の説明
100,101 アプリケーション処理装置、110 メモリ管理部、120 ガーベージコレクション実行部、130 ガーベージコレクション実行対象選択部、140 記憶部、141 ブロック管理情報、150 ガーベージコレクション実行条件設定部、151 ガーベージコレクション実行条件判定部、200 アプリケーション処理装置、210 アプリケーション状態管理部、220 ブロック管理情報、231,232 ガーベージコレクション管理情報、300 アプリケーション処理装置、310 低速メモリ、400 アプリケーション処理装置、410 ガーベージコレクション実行制御部、421,422 アプリケーション状態管理情報、500 アプリケーション処理装置、510 世代別ガーベージコレクション実行部、600 アプリケーション処理装置、610 CPU、620 バス、630 表示部、640 操作部、650 通信部、660 RAM、670 ROM、680 記憶装置、681 OS、682 プログラム群、683 ファイル群。

Claims (10)

  1. アプリケーションプログラムのデータが自己の有する記憶領域を占有する場合に、記憶領域を占有するデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行するアプリケーション処理装置において、
    データを記憶する記憶領域を有する記憶部と、
    前記記憶部の有する記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる記憶領域管理部と、
    前記記憶領域管理部がアプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行するガーベージコレクション実行部と
    を備えたことを特徴とするアプリケーション処理装置。
  2. 前記記憶領域管理部は、
    複数のアプリケーションプログラムの少なくとも2つに対して、分割したブロックを単位として記憶領域を割り当て、
    前記アプリケーション処理装置は、さらに、
    前記記憶領域管理部がブロックを単位として記憶領域を割り当てた少なくとも2つのアプリケーションプログラムの中から、ガーベージコレクションを実行するアプリケーションプログラムを選択するガーベージコレクション実行対象選択部を備え、
    前記ガーベージコレクション実行部は、
    前記ガーベージコレクション実行対象選択部が選択したアプリケーションプログラムに対してガーベージコレクションを実行することを特徴とする請求項1記載のアプリケーション処理装置。
  3. 前記アプリケーション処理装置は、さらに、
    アプリケーションプログラムの状態を管理するアプリケーション状態管理部を備え、
    前記ガーベージコレクション実行対象選択部は、
    前記アプリケーション状態管理部が管理するアプリケーションプログラムの状態に基づいて、ガーベージコレクションを実行するアプリケーションプログラムを選択することを特徴とする請求項2記載のアプリケーション処理装置。
  4. 前記アプリケーション処理装置は、さらに、
    ガーベージコレクションを実行する実行条件を受け付けて、受け付けた実行条件を設定する実行条件設定部と、
    前記実行条件設定部が設定した実行条件に基づいてガーベージコレクションを実行するかどうかを判定する実行判定部とを備え、
    前記ガーベージコレクション実行部は、
    前記実行判定部の判定結果に従ってガーベージコレクションを実行することを特徴とする請求項1記載のアプリケーション処理装置。
  5. 前記アプリケーション処理装置は、さらに、
    アプリケーションプログラムの状態を管理するアプリケーション状態管理部と、
    前記アプリケーション状態管理部が管理するアプリケーションプログラムの状態に基づいて、前記ガーベージコレクション実行部がガーベージコレクションを実行する実行時間を制御する実行時間制御部と
    を備えたことを特徴とする請求項1記載のアプリケーション処理装置。
  6. 前記アプリケーション処理装置は、さらに、
    前記記憶部と異なる第2記憶部を備え、
    前記記憶領域管理部は、
    前記ガーベージコレクション実行部がガーベージコレクションを実行した後に回収されずに残存する残存データを前記第2記憶部に移動することを特徴とする請求項1記載のアプリケーション処理装置。
  7. 前記ガーベージコレクション実行部は、
    ガーベージコレクションを実行した後に回収されずに残存する残存データをガーベージコレクションの実行を受けた回数に基づいて2以上の世代に分類し、分類した世代ごとにガーベージコレクションを実行することを特徴とする請求項1記載のアプリケーション処理装置。
  8. アプリケーションプログラムのデータが記憶領域を占有する場合に記憶領域を占有するデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行するガーベージコレクション実行方法において、
    記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる工程と、
    アプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行する工程と
    を備えたことを特徴とするガーベージコレクション実行方法。
  9. 複数のアプリケーションプログラムに記憶領域を割り当て、割り当てた記憶領域を管理する記憶領域管理方法において、
    記憶領域を複数のブロックに分割し、分割したブロックを単位として複数のアプリケーションプログラムに記憶領域を割り当てる工程と、
    記憶領域を占有するアプリケーションプログラムのデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行する場合に、ブロックを単位として記憶領域を割り当てた複数のアプリケーションプログラムの中からガーベージコレクションを実行するアプリケーションプログラムを選択する工程と
    を備えたことを特徴とする記憶領域管理方法。
  10. アプリケーションプログラムのデータが記憶領域を占有する場合に記憶領域を占有するデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行するガーベージコレクション実行プログラムにおいて、
    記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる処理と、
    アプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行する処理と
    をコンピュータに実行させることを特徴とするガーベージコレクション実行プログラム。
JP2004323548A 2004-11-08 2004-11-08 アプリケーション処理装置及びアプリケーション処理プログラム Expired - Fee Related JP4641176B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004323548A JP4641176B2 (ja) 2004-11-08 2004-11-08 アプリケーション処理装置及びアプリケーション処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004323548A JP4641176B2 (ja) 2004-11-08 2004-11-08 アプリケーション処理装置及びアプリケーション処理プログラム

Publications (2)

Publication Number Publication Date
JP2006134136A true JP2006134136A (ja) 2006-05-25
JP4641176B2 JP4641176B2 (ja) 2011-03-02

Family

ID=36727623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004323548A Expired - Fee Related JP4641176B2 (ja) 2004-11-08 2004-11-08 アプリケーション処理装置及びアプリケーション処理プログラム

Country Status (1)

Country Link
JP (1) JP4641176B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011058768A1 (ja) * 2009-11-12 2011-05-19 株式会社日立製作所 メモリ管理方法、計算機システム及びプログラム
JP2016512362A (ja) * 2013-03-11 2016-04-25 アマゾン テクノロジーズ インク コンピューティング環境での追跡アプリケーション使用法
KR20160071685A (ko) * 2014-12-12 2016-06-22 국민대학교산학협력단 스크래치패드 메모리 관리 방법, 이를 수행하는 스크래치패드 메모리 관리 장치 및 이를 저장하는 기록매체
US9798657B2 (en) 2014-10-15 2017-10-24 Samsung Electronics Co., Ltd. Data storage device including nonvolatile memory device and operating method thereof
WO2020044671A1 (ja) * 2018-08-30 2020-03-05 ソニー株式会社 ストレージコントローラ、ストレージシステムおよび情報処理システム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212808A (ja) * 1997-11-21 1999-08-06 Omron Corp プログラム制御装置とメモリ割当装置および方法
JP2000222281A (ja) * 1998-06-30 2000-08-11 Sun Microsyst Inc マルチスレッド仮想マシン内におけるメモリ・アロケ―ションの方法及び装置
JP2001014215A (ja) * 1999-07-01 2001-01-19 Matsushita Electric Ind Co Ltd プログラム実行装置
JP2002259146A (ja) * 2000-05-15 2002-09-13 Matsushita Electric Ind Co Ltd アプリケーション実行装置及び方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212808A (ja) * 1997-11-21 1999-08-06 Omron Corp プログラム制御装置とメモリ割当装置および方法
JP2000222281A (ja) * 1998-06-30 2000-08-11 Sun Microsyst Inc マルチスレッド仮想マシン内におけるメモリ・アロケ―ションの方法及び装置
JP2001014215A (ja) * 1999-07-01 2001-01-19 Matsushita Electric Ind Co Ltd プログラム実行装置
JP2002259146A (ja) * 2000-05-15 2002-09-13 Matsushita Electric Ind Co Ltd アプリケーション実行装置及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CSNG200000041005, 高岡詠子 外1名, "セル消費監視プロセスの設置によるGeneration Scavenging GC", 情報処理学会研究報告, 19910913, 第91巻,第78号(91−SYM−61), p.1−7, JP, 社団法人情報処理学会 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011058768A1 (ja) * 2009-11-12 2011-05-19 株式会社日立製作所 メモリ管理方法、計算機システム及びプログラム
JP2011107746A (ja) * 2009-11-12 2011-06-02 Hitachi Ltd メモリ管理方法、計算機システム及びプログラム
JP2016512362A (ja) * 2013-03-11 2016-04-25 アマゾン テクノロジーズ インク コンピューティング環境での追跡アプリケーション使用法
US10440132B2 (en) 2013-03-11 2019-10-08 Amazon Technologies, Inc. Tracking application usage in a computing environment
US9798657B2 (en) 2014-10-15 2017-10-24 Samsung Electronics Co., Ltd. Data storage device including nonvolatile memory device and operating method thereof
US10133665B2 (en) 2014-10-15 2018-11-20 Samsung Electronics Co., Ltd. Data storage device including nonvolatile memory device and operating method thereof
US10671524B2 (en) 2014-10-15 2020-06-02 Samsung Electronics Co,. Ltd. Data storage device including nonvolatile memory device and operating method thereof
KR20160071685A (ko) * 2014-12-12 2016-06-22 국민대학교산학협력단 스크래치패드 메모리 관리 방법, 이를 수행하는 스크래치패드 메모리 관리 장치 및 이를 저장하는 기록매체
KR101700315B1 (ko) * 2014-12-12 2017-01-26 국민대학교산학협력단 스크래치패드 메모리 관리 방법, 이를 수행하는 스크래치패드 메모리 관리 장치 및 이를 저장하는 기록매체
WO2020044671A1 (ja) * 2018-08-30 2020-03-05 ソニー株式会社 ストレージコントローラ、ストレージシステムおよび情報処理システム

Also Published As

Publication number Publication date
JP4641176B2 (ja) 2011-03-02

Similar Documents

Publication Publication Date Title
KR102206364B1 (ko) 메모리 리클레임 방법 및 장치
KR100725410B1 (ko) 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
US10241836B2 (en) Resource management in a virtualized computing environment
WO2017022002A1 (ja) ストレージ装置、ストレージシステム、ストレージシステムの制御方法
US9361300B2 (en) Controlling filling levels of storage pools
JPH0792775B2 (ja) 外部記憶装置群のスペース管理方法
US7836344B2 (en) Method for automatic dump assurance
TW201250471A (en) Managing data placement on flash-based storage by use
CN107239412B (zh) 基于Thin-LUN的存储空间配置方法、数据写入方法及存储设备
US20090150633A1 (en) Apparatus for managing memory in real-time embedded system and method of allocating, deallocating and managing memory in real-time embedded system
US11842046B2 (en) Storage fragment management method and terminal
WO2015058493A1 (zh) 一种存储数据处理方法及装置
JP4905810B2 (ja) ストレージ装置、領域割り当て方法、及びプログラム
JP5218985B2 (ja) メモリ管理方法計算機システム及びプログラム
CN103455433A (zh) 内存管理方法及系统
CN112631520A (zh) 分布式块存储系统、方法、装置、设备和介质
JP4641176B2 (ja) アプリケーション処理装置及びアプリケーション処理プログラム
CN107329797B (zh) 一种实例弹性伸缩方法、实例管理模块以及计算设备
CN107111549B (zh) 一种文件系统的管理方法及装置
CN115543859A (zh) 多分区ssd的磨损均衡优化方法、装置、设备及介质
CN114153392A (zh) 一种对象存储数据存储管理方法、装置及设备
JP2008139907A (ja) ジョブ割当プログラム及びジョブ割当方法
JP2006039942A (ja) 階層記憶システムにおけるファイル管理装置及びそのファイル管理方法
WO2008044865A1 (en) Device and method for allocating memory of terminal device
CN110199265B (zh) 存储装置和存储区域管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100727

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101012

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101105

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: 20101124

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101126

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131210

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees