(57)【要約】【課題】  アプリケーションにメモリ領域を効率的に割り当て、かつ、ガーベージコレクションの実行を効率的に行うアプリケーション処理装置を提供する。【解決手段】  記憶部１４０は、データを記憶するメモリ領域を有する。メモリ管理部１１０は、記憶部１４０の有するメモリ領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムにメモリ領域を割り当てる。ガーベージコレクション実行対象選択部１３０は、メモリ管理部１１０がブロックを単位として記憶領域を割り当てたアプリケーションプログラムの中から、ガーベージコレクションを実行するアプリケーションプログラムを選択する。ガーベージコレクション実行部１２０は、ガーベージコレクション実行対象選択部１３０が選択したアプリケーションプログラムに対し、ブロックを対象としてガーベージコレクションを実行する。【選択図】        図１
2006134136.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムのデータが自己の有する記憶領域を占有する場合に、記憶領域を占有するデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行するアプリケーション処理装置において、
データを記憶する記憶領域を有する記憶部と、
前記記憶部の有する記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる記憶領域管理部と、
前記記憶領域管理部がアプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行するガーベージコレクション実行部と
を備えたことを特徴とするアプリケーション処理装置。
【請求項２】
前記記憶領域管理部は、
複数のアプリケーションプログラムの少なくとも２つに対して、分割したブロックを単位として記憶領域を割り当て、
前記アプリケーション処理装置は、さらに、
前記記憶領域管理部がブロックを単位として記憶領域を割り当てた少なくとも２つのアプリケーションプログラムの中から、ガーベージコレクションを実行するアプリケーションプログラムを選択するガーベージコレクション実行対象選択部を備え、
前記ガーベージコレクション実行部は、
前記ガーベージコレクション実行対象選択部が選択したアプリケーションプログラムに対してガーベージコレクションを実行することを特徴とする請求項１記載のアプリケーション処理装置。
【請求項３】
前記アプリケーション処理装置は、さらに、
アプリケーションプログラムの状態を管理するアプリケーション状態管理部を備え、
前記ガーベージコレクション実行対象選択部は、
前記アプリケーション状態管理部が管理するアプリケーションプログラムの状態に基づいて、ガーベージコレクションを実行するアプリケーションプログラムを選択することを特徴とする請求項２記載のアプリケーション処理装置。
【請求項４】
前記アプリケーション処理装置は、さらに、
ガーベージコレクションを実行する実行条件を受け付けて、受け付けた実行条件を設定する実行条件設定部と、
前記実行条件設定部が設定した実行条件に基づいてガーベージコレクションを実行するかどうかを判定する実行判定部とを備え、
前記ガーベージコレクション実行部は、
前記実行判定部の判定結果に従ってガーベージコレクションを実行することを特徴とする請求項１記載のアプリケーション処理装置。
【請求項５】
前記アプリケーション処理装置は、さらに、
アプリケーションプログラムの状態を管理するアプリケーション状態管理部と、
前記アプリケーション状態管理部が管理するアプリケーションプログラムの状態に基づいて、前記ガーベージコレクション実行部がガーベージコレクションを実行する実行時間を制御する実行時間制御部と
を備えたことを特徴とする請求項１記載のアプリケーション処理装置。
【請求項６】
前記アプリケーション処理装置は、さらに、
前記記憶部と異なる第２記憶部を備え、
前記記憶領域管理部は、
前記ガーベージコレクション実行部がガーベージコレクションを実行した後に回収されずに残存する残存データを前記第２記憶部に移動することを特徴とする請求項１記載のアプリケーション処理装置。
【請求項７】
前記ガーベージコレクション実行部は、
ガーベージコレクションを実行した後に回収されずに残存する残存データをガーベージコレクションの実行を受けた回数に基づいて２以上の世代に分類し、分類した世代ごとにガーベージコレクションを実行することを特徴とする請求項１記載のアプリケーション処理装置。
【請求項８】
アプリケーションプログラムのデータが記憶領域を占有する場合に記憶領域を占有するデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行するガーベージコレクション実行方法において、
記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる工程と、
アプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行する工程と
を備えたことを特徴とするガーベージコレクション実行方法。
【請求項９】
複数のアプリケーションプログラムに記憶領域を割り当て、割り当てた記憶領域を管理する記憶領域管理方法において、
記憶領域を複数のブロックに分割し、分割したブロックを単位として複数のアプリケーションプログラムに記憶領域を割り当てる工程と、
記憶領域を占有するアプリケーションプログラムのデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行する場合に、ブロックを単位として記憶領域を割り当てた複数のアプリケーションプログラムの中からガーベージコレクションを実行するアプリケーションプログラムを選択する工程と
を備えたことを特徴とする記憶領域管理方法。
【請求項１０】
アプリケーションプログラムのデータが記憶領域を占有する場合に記憶領域を占有するデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行するガーベージコレクション実行プログラムにおいて、
記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる処理と、
アプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行する処理と
をコンピュータに実行させることを特徴とするガーベージコレクション実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はアプリケーションを処理するアプリケーション処理装置において、ガーベージコレクションを実行するアプリケーション処理装置に関する。
【背景技術】
【０００２】
従来、アプリケーションにメモリ領域を割り当てて実行するアプリケーション処理装置では、メモリの利用効率を高めるために、メモリ領域内に存在する不要になったデータを回収して空き領域とすることにより、メモリ領域を再利用可能とするガーベージコレクション技術がある。このガーベージコレクションの方法としては大きく分けて、（１）マーク・スイープ方式と、（２）参照カウント方式の２つがある。
【０００３】
マーク・スイープ方式には、マーク工程とスイープ工程がある。マーク工程では、アプリケーションが参照している全てのデータにマークを付ける。マークが付けられなかったデータを不要データとみなすことにより、メモリ領域のデータを必要データと不要データに分類する。
【０００４】
スイープ工程では、マークが付けられなかった不要データを破棄（回収）し、空き領域とする。空き領域は再利用可能な状態にするために、必要なデータを再配置して空き領域を一ヶ所に集める。あるいは、空き領域をリンクでつなげることにより、空き領域を連続したメモリ領域とする。
【０００５】
また、マーク・スイープ方式の応用として「世代別ガーベージコレクション」がある。「世代別ガーベージコレクション」は、一般的に生成されたデータの多くは短期間だけ必要とされるという特性を利用したものである。「世代別ガーベージコレクション」は、データの存在期間（世代）に注目し、新しいデータを新世代領域に割り当て、古いデータを旧世代領域に割り当て、新世代領域に対するガーベージコレクションを実行する頻度を高くし、全体的にガーベージコレクションの効率を向上させている。
【０００６】
参照カウント方式は、全てのデータについて被参照回数をカウントする。カウンタが「０」のデータはどこからも参照されていない不要データとみなすものである。不要データの回収については、マーク・スイープ方式と同様である（非特許文献１参照）。一般に、参照カウント方式はデータの参照関係の変更が発生する度にカウンタを変更する必要がある点、相互に参照している不要なデータを回収できない点等の問題がある。
【０００７】
複数のアプリケーションにメモリ領域を割り当ててアプリケーションを実行するアプリケーション処理装置では、メモリの利用効率を高めるために、メモリ領域内の不要データを回収し、再利用可能とする従来のガーベージコレクション技術を適用する。この適用の場合について、２つのアプリケーション１とアプリケーション２を実行中にアプリケーション１のガーベージコレクションを実行することを例に説明する。
【０００８】
図３７に示すように、メモリ領域内にはアプリケーション１のデータであるアプリ１と、アプリケーション２のデータであるアプリ２とが混在している。従来のガーベージコレクションの実行方法として一般的なマーク・スイープ方式では、図３８に示すように、ガーベージコレクション対象であるアプリケーション１の全ての必要データにマーク付けを完了した状態では、まだ、アプリケーション２の必要データにマーク付けがされていない。図３８では、アプリケーション１の必要データは、だ円の実線で示している。このため、アプリケーション１の不要データを回収することができない。従って、メモリ領域内のデータが必要かどうかを判定するためには、メモリ領域を使用している全てのアプリケーションについて、マーク工程を実行しなければならない。図３９は、アプリケーション１のデータと、アプリケーション２のデータが混在している場合に、メモリ領域を使用している両者のデータにマーク工程を実行した状態を示している。そのため、不要データを回収し空き領域を作る状態（図４０の状態）にするまでに、膨大な時間を要することになる。
【０００９】
一方、アプリケーションが使用する全てのデータについて、どのアプリケーションが使用しているデータかを管理すれば１つのアプリケーションに対してのみガーベージコレクションを実行することも可能である。しかしながら、データ毎に管理する必要があるため、管理領域の肥大化と処理のオーバヘッドを生じる。また、アプリケーション処理装置において、複数のアプリケーションを実行する場合、あるアプリケーションに対するガーベージコレクションの実行によって、他のアプリケーションの実行が妨げられる可能性がある。
【非特許文献１】日比野靖：「ごみ集めの基本アルゴリズム」情報処理（情報処理学会学会誌）第３５巻  第１１号  １９９４年１１月  ｐ．９９２−９９９
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、上記のような問題を解決し、アプリケーションにメモリ領域を効率的に割り当て、かつガーベージコレクションの実行を効率的に行うことを目的とする。
【課題を解決するための手段】
【００１１】
本発明のアプリケーション処理装置は、
アプリケーションプログラムのデータが自己の有する記憶領域を占有する場合に、記憶領域を占有するデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行するアプリケーション処理装置において、
データを記憶する記憶領域を有する記憶部と、
前記記憶部の有する記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる記憶領域管理部と、
前記記憶領域管理部がアプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行するガーベージコレクション実行部と
を備えたことを特徴とする。
【発明の効果】
【００１２】
本発明により、他のアプリケーションのメモリ使用状況に関係なく、１つのアプリケーションに対してガーベージコレクション処理を実行できる。このため短時間でガーベージコレクションを実行することができる。
【発明を実施するための最良の形態】
【００１３】
実施の形態１．
図１〜図１０を用いて実施の形態１について説明する。図１は、本実施の形態１のアプリケーション処理装置１００のブロック図である。図２は、ブロック管理情報１４１を示す図である。図３は、アプリケーション処理装置１００の動作を示すフローチャートである。図４は、アプリケーションの動作を示すフローチャートである。図５は、アプリケーション１を選択するフローチャートである。図６は、アプリケーション１に対するガーベージコレクションを説明するフローチャートである。図７は、ガーベージコレクション実行前のメモリ領域の状態を示す図である。図８は、不要データを回収した後のメモリ領域の状態を示す図である。図９は、ガーベージコレクション実行後のメモリ領域の状態を示す図である。図１０は、本実施の形態１のアプリケーション処理装置１０１のブロック図である。
【００１４】
図１を用いて、アプリケーション処理装置１００の構成を説明する。アプリケーション処理装置１００は、例えば、携帯電話、携帯情報端末等である。
【００１５】
アプリケーション処理装置１００は、記憶部１４０のメモリ領域（記憶領域）を管理するメモリ管理部１１０（記憶領域管理部の一例）、ガーベージコレクションを実行するガーベージコレクション実行部１２０、ガーベージコレクションの実行対象となるアプリケーションプログラムを選択するガーベージコレクション実行対象選択部１３０、及びメモリ領域を有する記憶部１４０を備える。また、記憶部１４０は、後述するブロック管理情報１４１を格納している。図２に示すブロック管理情報１４１は、メモリ管理部１１０が管理する。ブロック管理情報１４１の詳細は後述する。なお、実施の形態１〜実施の形態５のアプリケーション処理装置１００〜アプリケーション処理装置５００においては、同様の機能の構成要素には同じ符号を付し、説明を省略する。また、アプリケーションプログラムを単にアプリケーションという。また、ガーベージコレクションを「ＧＣ」と略記する場合がある。
【００１６】
次に、図３を用いて、アプリケーション処理装置１００の動作を説明する。
（１）メモリ管理部１１０は、記憶部１４０のメモリ領域をブロックで分割し、ブロック管理情報１４１を初期化する（Ｓ１０１）。
（２）メモリ管理部１１０はアプリケーション処理装置１００を終了する場合（Ｓ１０２のＹｅｓ）は終了する。アプリケーション処理装置１００を終了しない場合（Ｓ１０２のＮｏ）、メモリ管理部１１０は、アプリケーションからブロックの要求があるかどうかを判定する（Ｓ１０３）。アプリケーションは、その実行中にデータ生成等によりメモリを消費する。このため、割り当てられているブロック（記憶領域）の空き領域が枯渇した場合や、空き領域が予め設定した閾値を下回った場合には、メモリ管理部１１０に新たなブロックをＳ１０３において要求する。
（３）アプリケーションからブロックの要求がない場合（Ｓ１０３のＮｏ）、Ｓ１０２に戻る。
（４）アプリケーションからブロックの要求がある場合（Ｓ１０３のＹｅｓ）、メモリ管理部１１０は、ブロック管理情報１４１を参照し、未使用ブロックがあるかどうかを判定する（Ｓ１０４）。
（５）未使用ブロックがある場合（Ｓ１０４のＹｅｓ）、メモリ管理部１１０は、アプリケーションに未使用ブロックを割り当て（Ｓ１１０）、アプリケーションにブロックを割り当てたことをブロック管理情報１４１に登録する（Ｓ１１１）。
（６）未使用ブロックがない場合（Ｓ１０４のＮｏ）、ガーベージコレクション実行対象選択部１３０は、ガーベージコレクションを実行する対象となるアプリケーションを選択する（Ｓ１０５）。
（７）ガーベージコレクション実行部１２０は、Ｓ１０５でガーベージコレクション実行対象選択部１３０により選択されたアプリケーションが使用するブロック内に存在するデータを必要データと不要データに振り分ける（Ｓ１０６）。
（８）ガーベージコレクション実行部１２０は、不要データを回収し空き領域とし（Ｓ１０７）、必要データ（残存データ）をアプリケーションに割り当てられたブロック内に再配置する（Ｓ１０８）。
（９）メモリ管理部１１０は、未使用ブロックが出来たことをブロック管理情報１４１に登録し（Ｓ１０９）、Ｓ１０４に戻る。
【００１７】
次に、図４を用いてアプリケーションの動作を説明する。
（１）アプリケーションが起動し（Ｓ２０１）、処理を開始する（Ｓ２０２）。
（２）データ生成等の新たにメモリを必要とする処理でない場合（Ｓ２０３のＮｏ）、Ｓ２０２に戻る。
（３）アプリケーションは、データ生成等の新たにメモリを必要とする処理の場合（Ｓ２０３のＹｅｓ）、アプリケーションに割り当てられたブロックに空き領域があるかどうかを判定する（Ｓ２０４）。
（４）空き領域がない場合（Ｓ２０４のＮｏ）、メモリ管理部１１０にブロックを要求する（Ｓ２０５、図３のＳ１０３のｙｅｓに対応）。そして、アプリケーションは、図３のＳ１０３以降の過程によりブロックを取得し、データを取得したブロックに配置する（Ｓ２０６）。そして、アプリケーションは終了判定を行い（Ｓ２０７）、終了するか（Ｓ２０７のＹｅｓ）、Ｓ２０２に戻る（Ｓ２０７のＮｏ）。
【００１８】
次に、図２及び図５〜図９を用いてアプリケーション１に対するガーベージコレクションが実行される例を説明する。まず、図２について説明する。
（１）図２のブロック管理情報１４１は、メモリ管理部１１０がメモリ領域を６つのブロックに分割（Ｓ１０１に対応）した様子を示している。メモリ管理部１１０はアプリケーション１の起動時に、まずブロック１をアプリケーション１に割り当てる。
（２）また、メモリ管理部１１０はアプリケーション２の起動時に、ブロック２をアプリケーション２に割り当てる。
（３）その後、メモリ管理部１１０は、アプリケーション１とアプリケーション２の実行中に、アプリケーション１にブロック３、ブロック４、ブロック６を割り当て、アプリケーション２にブロック５を割り当てる（Ｓ１１０，Ｓ１１１に対応）。図２は、メモリ管理部１１０がブロックの割り当を「アプリケーション識別子」によって管理している様子を示している。例えば、図２において、「ブロック識別子」が１の場合に「アプリケーション識別子」が１とは、ブロック１をアプリケーション１が使用していることを示している。
（４）図７は、ガーベージコレクション実行前の記憶部１４０のメモリ領域の状態を示しており、図２のブロック管理情報１４１に対応している。図７において「アプリ１」とあるのはアプリケーション１用のデータであり、「アプリ２」とあるのはアプリケーション２用のデータであること示す（以下、図８、図９等の場合も同様）。上記のように、メモリ管理部１１０は、記憶部１４０の有するメモリ領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムにメモリ領域を割り当てる。従って、図７に示すように、一つのブロックには同じアプリケーションのデータが記憶されている。
【００１９】
次に図５を用いて、ガーベージコレクションの実行においてアプリケーション１を選択する場合を説明する。記憶部１４０は、図２及び図７に示す状態とする。
（１）図２のブロック管理情報１４１に示すように、未使用ブロックのない状態でアプリケーション１がメモリ管理部１１０にブロックを要求すると（Ｓ１０３のｙｅｓ）、未使用ブロックが存在しないため、メモリ管理部１１０はアプリケーション１に対する未使用ブロックの割り当てに失敗する（Ｓ３０１、Ｓ３０２、Ｓ１０４のＮＯに対応）。
（２）ガーベージコレクション実行対象選択部１３０は、ガーベージコレクションを実行する対象としてアプリケーション１を選択する（Ｓ３０３、Ｓ１０５に対応）。
（３）そして、ガーベージコレクション実行部１２０が、アプリケーション１に対するガーベージコレクション処理を開始する（Ｓ３０４、Ｓ１０６〜Ｓ１０８に対応）。
【００２０】
次に、図６を用いて、ガーベージコレクション実行部１２０がアプリケーション１に対してガーベージコレクションを実行する動作を説明する。記憶部１４０は、図２及び図７に示す状態とする。図３のＳ１０６〜Ｓ１０８に対応する。
（１）ガーベージコレクション実行部１２０は、ブロック管理情報１４１を参照し、アプリケーション１に割り当てられている記憶部１４０のメモリ領域が、ブロック１、ブロック３、ブロック４、ブロック６であるという情報を得る（Ｓ４０１）。この情報から、ガーベージコレクション実行部１２０は、メモリ管理部１１０がアプリケーション１に割り当てた記憶領域を示すブロック１、ブロック３、ブロック４、ブロック６を対象として、ガーベージコレクションの実行を開始する。
（２）まず、ガーベージコレクション実行部１２０は、アプリケーション１がメモリ領域の各ブロックに配置しているデータが、必要データであるか不要データであるかを振り分ける。これにより、アプリケーション１の全ての必要データにはマークが付けられ、不要データにはマークが付けられていない状態となる（Ｓ４０２）。図８には、必要データとしてマークが付けられたデータを「アプリ１−１」〜「アプリ１−１６」の１６のデータとして示した。
（３）次に、ガーベージコレクション実行部１２０は、マークが付けられていないデータを不要データとして回収し、不要データが配置されていた領域を空き領域とする（Ｓ４０３）。図８は、不要データを回収した後のメモリ領域の状態を示している。図８において、「アプリ１−１」〜「アプリ１−１６」の１６個のデータが必要データとして残存する。「破線の空白」は、不要データが回収された空き領域を示している。
（４）最後に、ガーベージコレクション実行部１２０は、マークが付けられているデータを必要データとして再配置する（Ｓ４０４）。図９は、ガーベージコレクション実行後のメモリ領域の状態を示している。再配置の対象となるブロックは、アプリケーション１に割り当てられているメモリ領域であるブロック１、ブロック３、ブロック４、ブロック６である。図９では、図８に示した「アプリ１−１」〜「アプリ１−１６」の必要データが、ガーベージコレクション実行部１２０により、ブロック１、ブロック２に再配置されている様子を示している。この結果、アプリケーション１のデータは、ブロック１とブロック３に再配置される。そして、ブロック４とブロック６には、アプリケーション１のデータが存在しない状態となる。
（５）ガーベージコレクション実行部１２０は、ブロック４とブロック６が空き領域になったことをメモリ管理部１１０に通知する（Ｓ４０５）。
（６）メモリ管理部１１０は、ブロック４とブロック６を未使用ブロックとしてブロック管理情報１４１に登録する。
（７）以上により、アプリケーション２のメモリ領域の使用状況に関係なく、アプリケーション１に対してガーベージコレクション処理を実行し、空き領域を作ることができる。
【００２１】
次に、図１０を用いて、アプリケーション処理装置１００にガーベージコレクション実行条件設定部１５０とガーベージコレクション実行条件判定部１５とを追加した、アプリケーション処理装置１０１について説明する。図３では、アプリケーションがブロックを要求しているかどうかを判定（Ｓ１０３）することにより、ガーベージコレクションを実行するかどうか判定（Ｓ１０４）している。しかしながら、以下の（ａ）〜（ｃ）のようなガーベージコレクションを実行する条件を予め設定し、より適切な時間にガーベージコレクションを実行させてもよい。
（ａ）未使用ブロックの残り数が予め設定した閾値を下回った場合に、そのガーベージコレクションを実行する。
（ｂ）新たにアプリケーションが起動された場合に、ガーベージコレクションを実行する。
（ｃ）実行中のアプリケーションが休眠した場合に、ガーベージコレクションを実行する。
【００２２】
このような場合に対応するアプリケーション処理装置１０１の構成を図１０に示す。図１０は、実施の形態１に係るアプリケーション処理装置１０１の構成を示す図である。アプリケーション処理装置１０１は、図１のアプリケーション処理装置１００に対して、ガーベージコレクション実行条件設定部１５０（実行条件設定部）と、ガーベージコレクション実行条件判定部１５１（実行判定部）とを備えた構成である。
【００２３】
ガーベージコレクション実行条件設定部１５０は、ユーザからガーベージコレクションを実行する実行条件を受け付け、受け付けた実行条件を設定する。上記の例であれば、（ａ）未使用ブロック数の閾値、（ｂ）アプリケーションの起動、（ｃ）アプリケーションの休眠等の実行条件を受け付けて、受け付けた実行条件を設定する。ガーベージコレクション実行条件判定部１５１は、ガーベージコレクション実行条件設定部１５０が設定した実行条件に基づき、ガーベージコレクションを実行するかどうかを判定する。また、ガーベージコレクション実行部１２０は、ガーベージコレクション実行条件判定部１５１の判定結果に従って、ガーベージコレクションを実行する。
【００２４】
本実施の形態１のアプリケーション処理装置は、メモリ管理部１１０とガーベージコレクション実行部１２０を備えたので、他のアプリケーションのメモリ使用状況に関係なく、１つのアプリケーションに対してガーベージコレクション処理を実行できる。従って、全てのアプリケーションに対して同時にガーベージコレクションを実行するよりも短時間でガーベージコレクション処理を完了させ、メモリの空き領域を作ることができる。
【００２５】
また、本実施の形態１のアプリケーション処理装置は、メモリ管理部１１０がメモリ領域を複数のブロックに分割し、各アプリケーションが必要とするメモリ領域を割り当てているので、複数のアプリケーションで効率的にメモリ領域を使用することができる。
【００２６】
本実施の形態１のアプリケーション処理装置は、ガーベージコレクション実行条件設定部１５０がガーベージコレクションを実行する条件を予め設定するので、より適切な状況においてガーベージコレクションを実行することができる。
【００２７】
実施の形態２．
次に、図１１〜１５を用いて実施の形態２について説明する。図１１は、実施の形態２のアプリケーション処理装置２００のブロック図である。図１２は、アプリケーション処理装置２００のガーベージコレクション実行対象選択部１３０の動作を示すフローチャートである図１３は、アプリケーションにブロックを割り当てた時刻を追加したブロック管理情報２２０を示す図である。図１４は、アプリケーションにガーベージコレクションを実行した時刻を有するガーベージコレクション管理情報２３１を示す図である。図１５は、ＧＣ許可フラグを追加したガーベージコレクション管理情報２３２を示す図である。
【００２８】
実施の形態２では、図１１に示すアプリケーション処理装置２００を説明する。アプリケーション処理装置２００は、実施の形態１の図１に示したアプリケーション処理装置１００に対して、さらに、アプリケーションプログラムの状態を管理するアプリケーション状態管理部２１０が追加されている。ガーベージコレクション実行対象選択部１３０は、アプリケーション状態管理部２１０が管理するアプリケーションプログラムの状態に基づいて、ガーベージコレクションを実行するべきアプリケーションプログラムを選択する。以下、アプリケーション処理装置２００について説明する。
【００２９】
アプリケーション状態管理部２１０は、「アプリケーションの状態」を管理している。「アプリケーションの状態」を管理する一例として、まず、アプリケーションが実行状態から休眠状態に遷移するかどうかを管理する場合を状態管理タイプ１として説明し、さらに、別の例を状態管理タイプ２〜状態管理タイプ５として説明する。
（１）まず、状態管理タイプ１の場合を説明する。実施の形態１と同様にアプリケーション１とアプリケーション２が実行中とする。
（２）メモリ管理部１１０は、図７のように、アプリケーション１にブロック１、ブロック３、ブロック４、ブロック６を割り当て、アプリケーション２にブロック２、ブロック５を割り当てている状態とする。
（３）この状態において、ユーザの要求等によりアプリケーション１の実行を停止し、休眠状態に遷移させる場合を想定する。
（４）休眠状態へ遷移させる場合に、ガーベージコレクション実行対象選択部１３０が、アプリケーション状態管理部２１０の管理するアプリケーションの状態（遷移状態）に基づき、アプリケーション１をガーベージコレクション対象として選択し、ガーベージコレクションを実行する場合を説明する。
【００３０】
図１２のフローチャートを用いて説明する。
（１）ガーベージコレクション実行対象選択部１３０には、ガーベージコレクション対象を選択する条件として、実行状態から休眠状態に遷移するアプリケーションを予め設定しておく（Ｓ５０１）。
（２）アプリケーション状態管理部２１０は、実行中のアプリケーションの状態を監視し、実行中のアプリケーションが休眠状態に遷移するのを待つ（Ｓ５０２）。
（３）ユーザの要求等によりアプリケーション１の実行が停止され、アプリケーション１が休眠状態すると、アプリケーション状態管理部２１０は、監視の結果、アプリケーション１が実行中から休眠に遷移したことを確認する。そして、アプリケーション状態管理部２１０は、休眠に遷移したことをガーベージコレクション実行対象選択部１３０に通知する（Ｓ５０３）。
（４）ガーベージコレクション実行対象選択部１３０は、この通知を受けることにより、アプリケーション１がガーベージコレクション対象アプリケーションとして選択される条件に適合したことを検知する。そして、ガーベージコレクション実行対象選択部１３０は、アプリケーション１をガーベージコレクション対象アプリケーションとして選択する（Ｓ５０４）。
（５）ガーベージコレクション実行対象選択部１３０は、ガーベージコレクション実行部１２０にアプリケーション１に対するガーベージコレクション実行を要求する（Ｓ５０５）。
（６）ガーベージコレクション実行部１２０は、アプリケーション１に対して、記憶領域である各ブロックを対象にガーベージコレクションを実行する。
【００３１】
実施の形態２のアプリケーション処理装置２００はアプリケーション状態管理部２１０を備えたので、アプリケーション１が実行状態から休眠状態に「遷移」した場合に、アプリケーション１に対するガーベージコレクション処理が実行される。このため、アプリケーション１が完全に休眠する前に、アプリケーション１の使用するメモリ領域を解放して、他の実行状態のアプリケーションに多くのメモリ領域を割り当てることができる。
【００３２】
状態管理タイプ１では、アプリケーションが実行状態から休眠状態へと遷移する状態を管理して、ガーベージコレクションを実行する場合について説明した。これは一例であり、ガーベージコレクション対象として、以下のような状態管理タイプ２〜状態管理タイプ５の場合にアプリケーションを選択するように設定してもよい。以下に状態管理タイプ２〜状態管理タイプ５の場合を説明する。
【００３３】
次に、状態管理タイプ２の場合を示す。状態管理タイプ１では、アプリケーション状態管理部２１０が、アプリケーションが実行中から休眠に遷移するかどうかを管理した。状態管理タイプ２では、アプリケーション状態管理部２１０は、休眠への遷移が既に終了した休眠中のアプリケーションを管理する。状態管理タイプ１の場合においてアプリケーションの実行から休眠への遷移が他のアプリケーションを起動する処理と重なる場合、他のアプリケーションの起動処理を優先させるために、アプリケーションの休眠への遷移時にガーベージコレクション処理を行わない方がよい場合もある。この場合は休眠への遷移時にガーベージコレクションを実行しないので、すでに休眠中のアプリケーションは、多くのメモリ領域を使用したままの状態となる。そのため、下記の動作とする。
（１）アプリケーション状態管理部２１０は、「アプリケーションの状態」として、すでに休眠中のアプリケーションが存在するかを監視し、休眠中のアプリケーションをガーベージコレクション実行対象選択部１３０に通知する。
（２）ガーベージコレクション実行対象選択部１３０は、休眠中のアプリケーションをガーベージコレクション対象として選択するように予め設定されている。ガーベージコレクション実行対象選択部１３０は、アプリケーション状態管理部２１０からの通知により、該当するアプリケーションを選択する。
（３）ガーベージコレクション実行部１２０は、ガーベージコレクション実行対象選択部１３０が選択したアプリケーションに対してガーベージコレクションを実行する。
（４）以上の状態管理タイプ２により、メモリ領域の枯渇等が原因となりガーベージコレクションが必要になった場合に、休眠中のアプリケーションをガーベージコレクション対象として選択させ、空き領域を作ることができる。また、これにより、実行中のアプリケーションのメモリ利用に影響を与えることなく、ガーベージコレクションを実行することができる。
【００３４】
次に、状態管理タイプ３の場合を示す。状態管理タイプ３ではアプリケーション状態管理部２１０が、アプリケーションに割り当てられているメモリ領域の大きさを管理する。アプリケーションに割り当てられているメモリ領域の量に大きな差がある場合、多くのメモリ領域が割り当てられているアプリケーションに対してガーベージコレクションを実行した方が、ガーベージコレクションによるメモリの空き領域が大きいと考えられる。そのため、下記の動作とする。
（１）アプリケーション状態管理部２１０は、「アプリケーションの状態」として、アプリケーションに割り当てられているメモリ領域の大きさを監視し、メモリ領域の多いアプリケーションをガーベージコレクション実行対象選択部１３０に通知する。
（２）ガーベージコレクション実行対象選択部１３０は、割り当てられているメモリ領域の多いアプリケーションをガーベージコレクション対象として選択するように予め設定されている。ガーベージコレクション実行対象選択部１３０は、アプリケーション状態管理部２１０からの通知により、該当するアプリケーションを選択する。
（３）ガーベージコレクション実行部１２０は、ガーベージコレクション実行対象選択部１３０が選択したアプリケーションに対してガーベージコレクションを実行する。
（４）以上の状態管理タイプ３により、メモリ領域の枯渇等が原因となりガーベージコレクションが必要になった場合に、多くのメモリ領域を使用しているアプリケーションをガーベージコレクション対象として選択し、空き領域を作ることができる。これにより少数のアプリケーションに対するガーベージコレクションの処理により、効率的にメモリの空き領域を作ることができる。
【００３５】
次に、状態管理タイプ４の場合を示す。状態管理タイプ４では、アプリケーション状態管理部２１０は、アプリケーションにブロックを割り当てた時刻を管理する。新しく生成されたデータは、古くから生成されたデータよりも短時間で不要となりやすい。このため、新しく生成されたデータは、ガーベージコレクションによって不要データとして回収される確率が高い。この特性を利用してガーベージコレクションの対象となるアプリケーションを選択する。
（１）メモリ管理部１１０は図１３に示すように、ブロック管理情報２２０において、メモリ管理部１１０がアプリケーションにブロックを割り当てた「ブロック割当時刻」を記録する。
（２）アプリケーション状態管理部２１０は、「アプリケーションの状態」として、ブロック管理情報２２０に記録された「ブロック割当時刻」を監視し、「ブロック割当時刻」が新しいアプリケーションをガーベージコレクション実行対象選択部１３０に通知する。図１３では、ブロック４が一番新しく割り当てられたブロックである。よって、アプリケーション状態管理部２１０は、アプリケーション１の「ブロック割当時刻」が一番新しいことをガーベージコレクション実行対象選択部１３０に通知する。
（３）ガーベージコレクション実行対象選択部１３０は、「ブロック割当時刻」が新しいアプリケーションをガーベージコレクション対象として選択するように予め設定されている。ガーベージコレクション実行対象選択部１３０は、アプリケーション状態管理部２１０からの通知により、該当するアプリケーション１を選択する。
（４）以上の状態管理タイプ４により、メモリ領域の枯渇等が原因となりガーベージコレクションが必要になった場合に、新しいデータを多く含むアプリケーションをガーベージコレクション対象として選択させ、空き領域を作ることができる。このため、少数のアプリケーションに対するガーベージコレクションの処理により、効率的に空き領域を作ることができる。
【００３６】
次に、状態管理タイプ５の場合を示す。状態管理タイプ５では、アプリケーション状態管理部２１０は、アプリケーションにガーベージコレクションを実行した時刻を管理する。前回のガーベージコレクションを実行してから長時間経過したアプリケーションには、多くの不要データが存在していると考えられる。従って、状態管理タイプ５では、前回のＧＣ実行時刻から最も時間の経過しているアプリケーションを選択する。
（１）アプリケーション状態管理部２１０は、図１４に示すような、アプリケーションに対するガーベージコレクション処理の実行時刻が登録されているガーベージコレクション管理情報２３１を備えている。ガーベージコレクション実行部１２０は、ガーベージコレクションを実行した場合に、アプリケーションごとにそのＧＣ実行時刻をガーベージコレクション管理情報２３１に登録する。
（２）アプリケーション状態管理部２１０は、「アプリケーションの状態」として、ガーベージコレクション管理情報２３１に登録された「ＧＣ実行時刻」を監視し、前回の「ＧＣ実行時刻」のより古いアプリケーションをガーベージコレクション実行対象選択部１３０に通知する。図１４では、アプリケーション１が前回のＧＣ実行から最も時間が経過している。よって、アプリケーション状態管理部２１０は、アプリケーション１の「ＧＣ実行時刻」が最も古いことをガーベージコレクション実行対象選択部１３０に通知する。
（３）ガーベージコレクション実行対象選択部１３０は、前回ガーベージコレクションを実行した時刻が古いアプリケーションをガーベージコレクション実行対象として選択するように予め設定されている。ガーベージコレクション実行対象選択部１３０は、アプリケーション状態管理部２１０からの通知により、該当するアプリケーション１を選択する。
（４）以上の状態管理タイプ５により、メモリ領域の枯渇等が原因となりガーベージコレクションが必要になった場合に、不要なデータを多く含むアプリケーションをガーベージコレクション対象として選択させ、空き領域を作ることができる。
（５）以上のように、ＧＣ実行時刻をガーベージコレクション管理情報２３１に登録することにより、次回にガーベージコレクション実行対象選択部１３０がガーベージコレクション対象を選択する場合に、前回のガーベージコレクションから最も時間が経過しているアプリケーションを選択することができる。これにより少数のアプリケーションに対するガーベージコレクションの処理により、効率的に空き領域を作ることができる。
（６）また、アプリケーションによっては、できるだけガーベージコレクションを実行させたくない場合も存在する。そこで、図１５に示すように、ガーベージコレクション管理情報２３２に、さらに「ＧＣ許可フラグ」を付加し、アプリケーション状態管理部２１０は「ＧＣ許可フラグ」が「ＧＣ許可」のアプリケーションだけを通知するようにしてもよい。
【００３７】
また、上記のような状態管理タイプ１〜状態管理タイプ５について、アプリケーション状態管理部２１０がガーベージコレクション対象を通知する複数の条件に優先順位を付けて予め設定することにより、これらの条件の組み合わせでガーベージコレクション対象となるアプリケーションを選択するようにしてもよい。
【００３８】
実施の形態３．
次に、図１６、図１７を用いて実施の形態３について説明する。図１６は、実施の形態３のアプリケーション処理装置３００のブロック図である。図１７は、低速メモリへのデータの移動を示す図である。実施の形態３は、実施の形態１のアプリケーション処理装置１００に対して、さらに、記憶部１４０とは異なる低速メモリ３１０（第２記憶部の一例）を備えたアプリケーション処理装置２００に関する。ガーベージコレクション実行後に必要データとして残存するデータを低速メモリ３１０に移動する実施形態である。この低速メモリ３１０は、記憶部１４０よりもアクセス速度が遅い。
【００３９】
次に、低速メモリ３１０へのデータの移動動作を説明する。
（１）実施の形態２の状態管理タイプ１の場合と同様に、アプリケーション１とアプリケーション２が実行中であるとする。図２、図７の場合と同様に、メモリ管理部１１０は、アプリケーション１に対してブロック１、ブロック３、ブロック４、ブロック６を割り当て、アプリケーション２に対してブロック２、ブロック５を割り当てている状態である。
（２）この状態において、実施の形態２の状態管理タイプ１の場合と同様に、ユーザの要求等によりアプリケーション１の実行を停止し、休眠状態へと遷移させる。この場合に、ガーベージコレクション実行対象選択部１３０が休眠へと遷移するアプリケーション１をガーベージコレクション対象として選択し、ガーベージコレクション実行部１２０によりガーベージコレクションを実行する。アプリケーション１のガーベージコレクションが完了すると、図９と同様に、アプリケーション１のデータは、ブロック１とブロック３だけに存在する状態となる（「アプリ１−１」〜「アプリ１−１６」）。
（３）ガーベージコレクション実行後、メモリ管理部１１０は、図１７に示すように、ブロック１とブロック３の残存データ（「アプリ１−１」〜「アプリ１−１６」）を低速メモリ３１０に転送（移動）する。この結果、図１７の記憶部１４０のブロック１、ブロック３は空き領域になる。
（４）そして、メモリ管理部１１０は、ブロック１とブロック３を未使用ブロックとしてブロック管理情報１４１に登録する。
【００４０】
実施の形態３のアプリケーション処理装置３００は低速メモリ３１０を備えたので、アプリケーション１が使用していた全てのブロックが未使用ブロックとなる。このため、他のアプリケーションを実行する際に、多くのメモリ領域を割り当てることができる。
【００４１】
実施の形態４．
次に、図１８〜図２０を用いて実施の形態４を説明する。図１８は、実施の形態４のアプリケーション処理装置４００のブロック図である。図１９は、アプリケーション状態管理情報４２１を示す図である。図２０は、アプリケーション状態管理情報４２２を示す図である。
【００４２】
実施の形態４は、ガーベージコレクションの実行時間を制御する実施形態である。図１８のアプリケーション処理装置４００は、実施の形態２のアプリケーション処理装置２００に対して、さらに、ガーベージコレクション実行部１２０の実行時間を制御するガーベージコレクション実行制御部４１０（実行時間制御部の一例）を備えた構成である。
【００４３】
図１９は、アプリケーション状態管理部２１０が備え、管理する「アプリケーション状態管理情報４２１」である。アプリケーション状態管理情報４２１には、各アプリケーションごとに予め設定された「実行停止許容期間」が登録されている。「実行停止許容期間」は、各アプリケーションについて実行停止を許容できる期間である。ガーベージコレクション実行制御部４１０は上記「実行停止許容期間」の情報に基づき、ガーベージコレクションの実行によりアプリケーション実行の停止期間が「実行停止許容期間」を超えないようにガーベージコレクション実行部１２０の実行時間を制御する。ガーベージコレクション実行制御部４１０は、断続的にガーベージコレクションを実行するように、ガーベージコレクション実行部１２０のガーベージコレクション実行時間を制御する。
【００４４】
また、図２０は、アプリケーション状態管理部２１０が備え、管理する「アプリケーション状態管理情報４２２」である。「アプリケーション状態管理情報４２２」には、各アプリケーションのガーベージコレクションの「ＧＣ実行時刻」と、ガーベージコレクションの「ＧＣ実行間隔」とが登録されている。ガーベージコレクション実行制御部４１０は、上記の「ＧＣ実行時刻」と「ＧＣ実行間隔」の情報に基づき、「ＧＣ実行間隔」よりも時間が経過しているアプリケーションが存在するかどうかを定期的にチェックする。ガーベージコレクション実行制御部４１０は、前記チェック結果に基づき、ガーベージコレクション実行部１２０のガーベージコレクション実行時間を制御する。
【００４５】
以上のように、実施の形態４のアプリケーション処理装置４００はガーベージコレクション実行制御部４１０を備えたので、長時間ガーベージコレクションが実行されないアプリケーションをチェックすることにより、１回のガーベージコレクション処理時間が長時間にわたるアプリケーションの発生を防止することができる。
【００４６】
実施の形態５．
次に、図２１〜図３３を用いて実施の形態５について説明する。図２１は、実施の形態５のアプリケーション処理装置５００の構成図である。図２２は、アプリケーション１とアプリケーション２へのブロックの割り当て状況を示す図である。図２３は、１回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。図２４は、１回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。図２５は、２回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。図２６は、２回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。図２７は、３回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。図２８は、３回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。図２９は、旧世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。図３０は、旧世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。図３１は、１回目の新世代ガーベージコレクションの実行のフローチャートである。図３２は、２回目の新世代ガーベージコレクションの実行のフローチャートである。図３３は、旧世代ガーベージコレクションの実行のフローチャートである。
【００４７】
実施の形態５は、世代別ガーベージコレクションを実施する形態である。実施の形態５では、図２１に示す通り、図１のアプリケーション処理装置１００におけるガーベージコレクション実行部１２０が、世代別ガーベージコレクション実行部５１０に変更されている。世代別ガーベージコレクション実行部５１０は、ガーベージコレクションを実行した後に回収されずに残存する必要データ（残存データ）を、ガーベージコレクションの実行を受けた回数に基づいて２以上の世代に分類する。そして、分類した世代ごとにガーベージコレクションを実行する。図２２は、アプリケーション１、アプリケーション２のデータが、ブロックごとに新世代領域と旧世代領域とに分類されている状態を示している。
【００４８】
図２３に示すように、メモリ管理部１１０は、アプリケーション１にブロック１、ブロック２を割り当てている。図２３において、ブロック１の新世代領域は、「データ生成領域」、「データ移動元領域」、「データ移動先領域」の３つの領域に分けられている。
（１）「データ生成領域」は、アプリケーションが新たに生成したデータを配置する領域である。
（２）「データ移動元領域」は、新世代ガーベージコレクションを実行する際に、データの移動元となる領域である。
（３）「データ移動先領域」は、新世代ガーベージコレクションを実行する際に、データの移動先となる領域である。
【００４９】
「データ移動元領域」と「データ移動先領域」は、世代別ガーベージコレクション実行部５１０が新世代ガーベージコレクションを実行した後は役割が入れ替わる。「データ移動元領域」は「データ移動先領域」になり、「データ移動先領域」は「データ移動元領域」になる。詳細は後述する。
【００５０】
次に動作について説明する。まず、図３１を用いて、アプリケーション１に１回目の新世代ガーベージコレクションを掛ける動作について説明する。
（１）アプリケーション１が実行中にデータを生成し、新世代領域内の「データ生成領域」を使い切るとする。図２３は、「データ生成領域」を使い切った場合を示している。「データ生成領域」を使い切ると、世代別ガーベージコレクション実行部５１０は、アプリケーション１に対して１回目の新世代ガーベージコレクションの実行を開始する（Ｓ６０１）。
（２）世代別ガーベージコレクション実行部５１０は、ブロック管理情報を参照し、アプリケーション１の新世代領域がブロック１であるという情報を得る（Ｓ６０２）。
（３）世代別ガーベージコレクション実行部５１０は、新世代領域の「データ生成領域内」に存在するデータを、必要データと不要データに振り分ける（Ｓ６０３）。
（４）世代別ガーベージコレクション実行部５１０は、図２４に示すように、必要データを「データ移動先領域」に再配置する一方、不要データを回収し空き領域として解放する。この結果、「データ生成領域内」の全ての必要データは「データ移動先領域」に再配置される。この結果、「データ生成領域」と「データ移動元領域」は空き領域となる（Ｓ６０４）。
（５）世代別ガーベージコレクション実行部５１０は、「データ移動先領域」に再配置したデータの年齢を１歳増加させる（Ｓ６０５）。図２４では、１歳増加させた年齢を「（１）」と記載している。
（６）世代別ガーベージコレクション実行部５１０は、「データ移動先領域」を「データ移動元領域」に名称変更し、「データ移動元領域」を「データ移動先領域」に名称変更し、１回目の新世代ガーベージコレクションの処理を完了する（Ｓ６０６）。図２４は、１回目の新世代ガーベージコレクションが終了した状態を示している。なお、図２４は「データ移動先領域」と「データ移動元領域」との名称を変更する前の状態を示している。
【００５１】
次に、図３２を用いてアプリケーション１に２回目の新世代ガーベージコレクションを掛ける動作について説明する。アプリケーション１が実行中にさらにデータを生成し、再び新世代領域内の「データ生成領域」を使い切る。図２５は、再び新世代領域内の「データ生成領域」を使い切った場合を示している。図２５は図２４に対して「データ移動先領域」と「データ移動元領域」との名称を変更した後の状態を示している。
（１）再び新世代領域内の「データ生成領域」を使い切ると、世代別ガーベージコレクション実行部５１０は、アプリケーション１に対して、２回目の新世代ガーベージコレクションを実行する（Ｓ７０１）。
（２）世代別ガーベージコレクション実行部５１０は、ブロック管理情報を参照し、アプリケーション１の新世代領域がブロック１であるという情報を得る（Ｓ７０２）。
（３）世代別ガーベージコレクション実行部５１０は、新世代領域の「データ生成領域内」に存在するデータ、及び「データ移動元領域内」に存在する年齢が「１歳」のデータについて、必要データと不要データに振り分ける（Ｓ７０３）。このように「データ移動元領域内」に存在するデータについても必要データ、不要データにデータを振り分ける点が、１回目の新世代ガーベージコレクションと相違している。
（４）世代別ガーベージコレクション実行部５１０は、図２６に示すように、必要データを「データ移動先領域」に再配置する一方、不要データを回収して空き領域として解放する。なお図２６では、この２回目の新世代ガーベージコレクションにおいて、「データ移動先領域」と「データ移動元領域」との名称を変更する「前」の状態を示している。最終的に全ての必要データは図２６に示す「データ移動先領域」に再配置され、「データ生成領域」と「データ移動元領域」は空き領域となる（Ｓ７０４）。
（５）世代別ガーベージコレクション実行部５１０は、「データ移動先領域」に再配置されたデータの年齢を１歳増加させる（Ｓ７０５）。すなわち、「データ生成領域」から「データ移動先領域」に再配置されたデータは年齢が「１歳」となり、図２６に「アプリ１（１）」と示している。また、「データ移動元領域」から「データ移動先領域」に再配置されたデータは、年齢が「２歳」となり、図２６に「アプリ１（２）」と示している。
（６）世代別ガーベージコレクション実行部５１０は、「データ移動先領域」をデータ移動元領域に名称変更し、「データ移動元領域」を「データ移動先領域」に名称変更し、２回目の新世代ガーベージコレクションの処理を完了する（Ｓ７０６）。
【００５２】
新世代ガーベージコレクションを繰り返すことにより、必要データとして残存し続けたデータの年齢が予め設定した閾値を超えた場合、そのデータは、「旧世代データ」となる。一例として、３回目のＧＣ実行前を示す図２７において、年齢が「２歳」であるデータを示す「アプリ１（２）」は「旧世代データ」の候補であるとする。この場合、３回目のＧＣを実行すると、３回目のＧＣ実行後を示す図２８のように、世代別ガーベージコレクション実行部５１０は３回目の新世代ガーベージコレクションにおいて、「旧世代データ」候補である「アプリ１（２）」を再配置する際には（再配置により年齢は３歳になる）、「データ移動先領域」ではなく、ブロック２の「旧世代領域」に再配置する。このように、世代別ガーベージコレクション実行部５１０は、ガーベージコレクションを実行した後に回収されずに必要データとして残存し続ける残存データを、ガーベージコレクションの実行を受けた回数（この例では年齢）に基づいて２以上の世代に分類する。世代別ガーベージコレクション実行部５１０は、データを世代に分類することにより、分類した世代ごとに、ガーベージコレクションを実行するができる。
【００５３】
次に、図３３のフローチャートを用いてアプリケーション１に旧世代ガーベージコレクションを掛ける動作について説明する。
（１）図２９に示すように、旧世代データがブロック２の「旧世代領域内」のデータ生成領域を使い切ると、世代別ガーベージコレクション実行部５１０は、アプリケーション１に対して、旧世代のブロックのブロックを対象として、旧世代ガーベージコレクションを実行する（Ｓ８０１）。
（２）世代別ガーベージコレクション実行部５１０は、ブロック管理情報を参照し、アプリケーション１の旧世代領域が「ブロック２」であるという情報を得る（Ｓ８０２）。
（３）世代別ガーベージコレクション実行部５１０は、ブロック２における「旧世代領域」のデータ生成領域内に存在するデータについて、必要データと不要データに振り分ける（Ｓ８０３）。
（４）世代別ガーベージコレクション実行部５１０は、図３０に示すように、不要データを回収して空き領域として解放した後、必要データをブロック２の「旧世代領域内」で再配置し、旧世代ガーベージコレクションの処理を完了する（Ｓ８０４）。
【００５４】
実施の形態５のアプリケーション処理装置５００は、世代別ガーベージコレクション実行部５１０を備えたので、他のアプリケーションのメモリ使用状況に関係なく、１つのアプリケーションに対して世代別ガーベージコレクション処理を実行できる。このため、全てのアプリケーションに対してガーベージコレクションを実行するよりも短時間でガーベージコレクションを完了させることができる。加えて、世代別ガーベージコレクションを使用することにより、１つのアプリケーションに対するガーベージコレクション処理の時間を短時間で実行し、空き領域を作ることができる。
【００５５】
なお、本実施の形態では新世代領域と旧世代領域にそれぞれ１ブロックずつ割り当てる例を示したが、１つのブロックに新世代領域と旧世代領域の両方を割り当ててもよいし、新世代領域、あるいは旧世代領域を複数のブロックにまたがって割り当ててもよい。アプリケーションごとにブロックが異なれば構わない。そして、世代ごとにデータを分類し、分類した世代ごとにガーベージコレクションを実行できればよい。
【００５６】
実施の形態６．
次に、図３４〜図３６を用いて実施の形態６を説明する。実施の形態６は、実施の形態１のアプリケーション処理装置１００の動作を、方法、プログラム及びプログラムを記録した記録媒体により実施する実施形態である。
【００５７】
前記の実施の形態１においては、アプリケーション処理装置１００における各構成要素の動作は、互いに関連しており、動作の関連を考慮しながら、一連の動作として置き換えることができる。そして、このように構成要素の動作を一連の工程に置き換えることにより、ガーベージコレクション実行方法、記憶領域管理方法の実施形態とすることができる。
【００５８】
図３４は、実施の形態１のアプリケーション処理装置１００におけるメモリ管理部１１０の動作、及びガーベージコレクション実行部１２０の動作を工程に置き換えて、ガーベージコレクション実行方法としたフローチャートである。
（１）Ｓ８０１において、記憶領域を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムに記憶領域を割り当てる。
（２）Ｓ８０２において、アプリケーションプログラムに割り当てた記憶領域を示すブロックを対象としてガーベージコレクションを実行する。
【００５９】
図３５は、実施の形態１のアプリケーション処理装置１００におけるメモリ管理部１１０の動作、及びガーベージコレクション実行対象選択部１３０の動作を工程に置き換えて、記憶領域管理方法としたフローチャートである。
（１）Ｓ９０１において、記憶領域を複数のブロックに分割し、分割したブロックを単位として複数のアプリケーションプログラムに記憶領域を割り当てる。
（２）Ｓ９０２において、記憶領域を占有するアプリケーションプログラムのデータの少なくとも一部を回収して回収したデータが占有していた記憶領域を解放するガーベージコレクションを実行する場合に、ブロックを単位として記憶領域を割り当てた複数のアプリケーションプログラムの中からガーベージコレクションを実行するアプリケーションプログラムを選択する。
【００６０】
また、図３４のＳ８０１、Ｓ８０２の工程を一連の処理と置き換えることにより、
ガーベージコレクション実行プログラムの実施形態とすることができる。また、ガーベージコレクション実行プログラムをコンピュータ読み取り可能な記録媒体に記録させることで、ガーベージコレクション実行プログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態とすることができる。図３５に工程を示した記憶領域管理方法についても同様である。
【００６１】
プログラムの実施の形態及びプログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態は、すべてコンピュータで動作可能なプログラムにより構成することができる。
【００６２】
図３６は、実施の形態１のアプリケーション処理装置１００の動作を、プログラムにより実行するアプリケーション処理装置６００の構成を示す。アプリケーション処理装置６００は、例えば、携帯電話である。
【００６３】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６１０は、バス６２０を介して、例えば液晶画面である表示部６３０、例えば操作キーからなる操作部６４０、通信部６５０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６６０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６７０、記憶装置６８０等が接続されている。記憶装置６８０には、オペレーティングシステムであるＯＳ６８１、プログラム群６８２、ファイル群６８３が格納されている。アプリケーション処理装置１００の記憶部１４０は、ＲＡＭ６６０が対応するものとする。アプリケーション１、アプリケーション２等のアプリケーションは、記憶装置６８０のプログラム群６８２に格納されている。及び、ガーベージコレクション実行プログラム、記憶領域管理プログラムもプログラム群６８２に格納されている。格納されるガーベージコレクション実行プログラム、記憶領域管理プログラムは、記憶部１４０に対応するＲＡＭ６６０のメモリ領域をブロックに分割し、分割したブロックを単位としてメモリ領域をアプリケーションに割り当てる。ファイル群には、例えば、ガーベージコレクション管理情報やアプリケーション状態管理情報が格納されている。
【００６４】
プログラムの実施の形態及びプログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態における各処理は、プログラムで実行されるが、このプログラムは、上記のように記憶装置６８０に記憶されている。そして、記憶装置６８０からＣＰＵ６１０に読み込まれ、ＣＰＵ６１０によって、プログラムの各処理が実行される。
【００６５】
また、ソフトウェア、あるいはプログラムは、ＲＯＭ６７０に記憶されたファームウェアで実行しても構わない。あるいは、ソフトウェアとファームウェアとハードウェアの組み合わせで実行しても構わない。
【００６６】
実施の形態６のガーベージコレクション実行方法は、メモリ領域（記憶領域）を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムにメモリ領域を割り当てる工程と、割り当てたメモリ領域を示すブロックを対象としてガーベージコレクションを実行する工程とを備えたので、他のアプリケーション（設例ではアプリケーション２）のメモリ領域の使用状況に関係なく、そのアプリケーション（設例ではアプリケーション１）のガーベージコレクションを実行できる。
【００６７】
実施の形態６の記憶領域管理方法は、メモリ領域（記憶領域）を複数のブロックに分割し、分割したブロックを単位として複数のアプリケーションプログラムにメモリ領域を割り当てる工程と、ガーベージコレクションを実行する場合に、ブロックを単位として記憶領域を割り当てた複数のアプリケーションプログラムの中からガーベージコレクションを実行するアプリケーションプログラムを選択する工程とを備えたので、第２のアプリケーション２のデータが必要か不要かを判定することなく、第１のアプリケーション１を選択してガーベージコレクションを実行することができる。
【００６８】
実施の形態６のガーベージコレクション実行プログラムは、メモリ領域（記憶領域）を複数のブロックに分割し、分割したブロックを単位としてアプリケーションプログラムにメモリ領域を割り当てる処理と、アプリケーションプログラムに割り当てたメモリ領域を示すブロックを対象としてガーベージコレクションを実行する処理とをコンピュータに実行させるので、他のアプリケーション（アプリケーション２）のメモリ領域の使用状況に関係なく、そのアプリケーション（アプリケーション１）のガーベージコレクションを実行できる。
【００６９】
以上、実施の形態のアプリケーション処理装置は、複数のアプリケーションにメモリ領域を割り当てて実行するアプリケーション処理装置であって、メモリ領域をブロックに分割して管理するメモリ管理部１１０、メモリ領域に記憶された不要なデータを削除し、再利用可能にするガーベージコレクション実行部１２０、ガーベージコレクションを実行する対象となるアプリケーションを選択するガーベージコレクション実行対象選択部１３０とを備え、メモリ管理部１１０は、アプリケーションに新たなメモリ領域を割り当てる場合に、アプリケーションにブロックを割り当て、アプリケーションにブロックを割り当てたことをアプリケーション識別子を用いて管理し、ガーベージコレクション実行対象選択部１３０は、メモリ管理部１１０が管理するブロックを割り当てられたアプリケーションの中から１つ以上のアプリケーションをガーベージコレクションを実行する対象として選択し、前記ガーベージコレクション実行部１２０は、ガーベージコレクション実行対象選択部１３０が選択したアプリケーションについて、ガーベージコレクションを実行することを特徴とする。
【００７０】
以上、実施の形態のアプリケーション処理装置は、アプリケーションの状態を管理するアプリケーション状態管理部２１０を備え、ガーベージコレクション実行対象選択部１３０は、アプリケーション状態管理部２１０が管理するアプリケーションの状態に基づき、ガーベージコレクションを実行する対象とするアプリケーションを選択することを特徴とする。
【００７１】
以上、実施の形態のアプリケーション処理装置は、ガーベージコレクションの実行条件を設定するガーベージコレクション実行条件設定部１５０と、ガーベージコレクション実行条件設定部１５０によって設定された条件を判定するガーベージコレクション実行条件判定部１５１を備え、前記ガーベージコレクション実行部１２０は、ガーベージコレクション実行条件判定部１５１によりガーベージコレクションを実行すると判定された場合に、ガーベージコレクションを実行することを特徴とする。
【００７２】
以上、実施の形態のアプリケーション処理装置は、通常のメモリ領域よりもアクセス速度の遅い低速メモリ３１０を備え、メモリ管理部１１０は、ガーベージコレクション実行部１２０によりガーベージコレクションを実行されたアプリケーションについて、アプリケーションが使用するブロックのデータを低速メモリ３１０に退避し、前記ブロックをアプリケーションに割り当てない未使用ブロックとすることを特徴とする。
【００７３】
以上、実施の形態のアプリケーション処理装置は、ガーベージコレクションの実行時間を制御するガーベージコレクション実行制御部４１０を備え、ガーベージコレクション実行制御部４１０は、アプリケーション状態管理部２１０が管理する情報に基づき、ガーベージコレクション実行部１２０によるガーベージコレクションの実行を制御することを特徴とする。
【００７４】
以上、実施の形態のアプリケーション処理装置は、ガーベージコレクション実行部１２０は、世代別ガーベージコレクションを実行する世代別ガーベージコレクション実行部５１０であることを特徴とする。
【００７５】
以上、実施の形態のメモリ管理方法（記憶領域管理方法）は、複数のアプリケーションにメモリ領域を割り当てて実行するアプリケーション処理装置におけるメモリ管理方法であって、メモリ領域をブロックに分割し、アプリケーションに新たなメモリ領域を割り当てる場合に、アプリケーションにブロックを割り当て、アプリケーションにブロックを割り当てたことをアプリケーション識別子を用いて管理し、メモリ領域に記憶された不要なデータを削除し、再利用可能にするガーベージコレクションを実行する際に、ブロックを割り当てられたアプリケーションの中からガーベージコレクションを実行する対象として選択することを特徴とする。
【００７６】
以上、実施の形態のガーベージコレクション実行方法は、複数のアプリケーションにメモリ領域を割り当てて実行するアプリケーション処理装置におけるガーベージコレクション実行方法であって、メモリ領域をブロックに分割し、アプリケーションに新たなメモリ領域を割り当てる場合に、アプリケーションにブロックを割り当て、アプリケーションにブロックを割り当てたことをアプリケーション識別子を用いて管理し、メモリ領域に記憶された不要なデータを削除し、再利用可能にするガーベージコレクションを実行する際に、ブロックを割り当てられたアプリケーションの中からガーベージコレクションを実行する対象として選択し、選択されたアプリケーションについてガーベージコレクションを実行することを特徴とする。
【図面の簡単な説明】
【００７７】
【図１】実施の形態１における、アプリケーション処理装置１００のブロック図である。
【図２】実施の形態１における、ブロック管理情報１４１を示す図である。
【図３】実施の形態１における、アプリケーション処理装置１００の動作を示すフローチャートである。
【図４】実施の形態１における、アプリケーションの動作を示すフローチャートである。
【図５】実施の形態１における、アプリケーション１を選択するフローチャートである。
【図６】実施の形態１における、アプリケーション１に対するガーベージコレクションを説明するフローチャートである。
【図７】実施の形態１における、ガーベージコレクション実行前のメモリ領域の状態を示す図である。
【図８】実施の形態１における、不要データを回収した後のメモリ領域の状態を示す図である。
【図９】実施の形態１における、ガーベージコレクション実行後のメモリ領域の状態を示す図である。
【図１０】実施の形態１における、アプリケーション処理装置１０１のブロック図である。
【図１１】実施の形態２における、アプリケーション処理装置２００のブロック図である。
【図１２】実施の形態２における、アプリケーション処理装置２００のガーベージコレクション実行対象選択部１３０の動作を示すフローチャートである。
【図１３】実施の形態２における、アプリケーションにブロックを割り当てた時刻を追加したブロック管理情報２２０を示す図である。
【図１４】実施の形態２における、アプリケーションにガーベージコレクションを実行した時刻を有するガーベージコレクション管理情報２３１を示す図である。
【図１５】実施の形態２における、ＧＣ許可フラグを追加したガーベージコレクション管理情報２３２を示す図である。
【図１６】実施の形態３における、アプリケーション処理装置３００のブロック図である。
【図１７】実施の形態３における、低速メモリ３１０へのデータの移動を示す図である。
【図１８】実施の形態４における、アプリケーション処理装置４００のブロック図である。
【図１９】実施の形態４における、アプリケーション状態管理情報４２１を示す図である。
【図２０】実施の形態４における、アプリケーション状態管理情報４２２を示す図である。
【図２１】実施の形態５における、アプリケーション処理装置５００のブロック図である。
【図２２】実施の形態５における、アプリケーション１とアプリケーション２へのブロックの割り当て状況を示す図である。
【図２３】実施の形態５における、１回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。
【図２４】実施の形態５における、１回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。
【図２５】実施の形態５における、２回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。
【図２６】実施の形態５における、２回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。
【図２７】実施の形態５における、３回目の新世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。
【図２８】実施の形態５における、３回目の新世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。
【図２９】実施の形態５における、旧世代ガーベージコレクション実行前のメモリ領域の状態を示す図である。
【図３０】実施の形態５における、旧世代ガーベージコレクション実行後のメモリ領域の状態を示す図である。
【図３１】実施の形態５における、１回目の新世代ガーベージコレクションのフローチャートである。
【図３２】実施の形態５における、２回目の新世代ガーベージコレクションのフローチャートである。
【図３３】実施の形態５における、旧世代ガーベージコレクションのフローチャートである。
【図３４】実施の形態６における、ガーベージコレクション実行方法の工程を示すフローチャートである。
【図３５】実施の形態６における、記憶領域管理方法の工程を示すフローチャートである。
【図３６】実施の形態６における、アプリケーション処理装置６００のブロック図である。
【図３７】従来のメモリ領域を示す図である。
【図３８】従来のメモリ領域を示す図である。
【図３９】従来のメモリ領域を示す図である。
【図４０】従来のメモリ領域を示す図である。
【符号の説明】
【００７８】
１００，１０１  アプリケーション処理装置、１１０  メモリ管理部、１２０  ガーベージコレクション実行部、１３０  ガーベージコレクション実行対象選択部、１４０  記憶部、１４１  ブロック管理情報、１５０  ガーベージコレクション実行条件設定部、１５１  ガーベージコレクション実行条件判定部、２００  アプリケーション処理装置、２１０  アプリケーション状態管理部、２２０  ブロック管理情報、２３１，２３２  ガーベージコレクション管理情報、３００  アプリケーション処理装置、３１０  低速メモリ、４００  アプリケーション処理装置、４１０  ガーベージコレクション実行制御部、４２１，４２２  アプリケーション状態管理情報、５００  アプリケーション処理装置、５１０  世代別ガーベージコレクション実行部、６００  アプリケーション処理装置、６１０  ＣＰＵ、６２０  バス、６３０  表示部、６４０  操作部、６５０  通信部、６６０  ＲＡＭ、６７０  ＲＯＭ、６８０  記憶装置、６８１  ＯＳ、６８２  プログラム群、６８３  ファイル群。
【図１】
2006134136.tif 000003
【図２】
2006134136.tif 000004
【図３】
2006134136.tif 000005
【図４】
2006134136.tif 000006
【図５】
2006134136.tif 000007
【図６】
2006134136.tif 000008
【図７】
2006134136.tif 000009
【図８】
2006134136.tif 000010
【図９】
2006134136.tif 000011
【図１０】
2006134136.tif 000012
【図１１】
2006134136.tif 000013
【図１２】
2006134136.tif 000014
【図１３】
2006134136.tif 000015
【図１４】
2006134136.tif 000016
【図１５】
2006134136.tif 000017
【図１６】
2006134136.tif 000018
【図１７】
2006134136.tif 000019
【図１８】
2006134136.tif 000020
【図１９】
2006134136.tif 000021
【図２０】
2006134136.tif 000022
【図２１】
2006134136.tif 000023
【図２２】
2006134136.tif 000024
【図２３】
2006134136.tif 000025
【図２４】
2006134136.tif 000026
【図２５】
2006134136.tif 000027
【図２６】
2006134136.tif 000028
【図２７】
2006134136.tif 000029
【図２８】
2006134136.tif 000030
【図２９】
2006134136.tif 000031
【図３０】
2006134136.tif 000032
【図３１】
2006134136.tif 000033
【図３２】
2006134136.tif 000034
【図３３】
2006134136.tif 000035
【図３４】
2006134136.tif 000036
【図３５】
2006134136.tif 000037
【図３６】
2006134136.tif 000038
【図３７】
2006134136.tif 000039
【図３８】
2006134136.tif 000040
【図３９】
2006134136.tif 000041
【図４０】
2006134136.tif 000042