(57)【要約】  本出願の実施形態は、リソース再利用方法及びリソース再利用装置を提供する。この方法は、ターゲット領域として、ヒープメモリによって包含されるターゲットテナントに対応するメモリ領域を決定することと、ターゲット領域に対してリソース再利用を行うことにより、ターゲット領域を解放することとを包む。
2020508507.tif 000002
【特許請求の範囲】
【請求項１】
ターゲット領域として、ヒープメモリによって包含されるターゲットテナントに対応するメモリ領域を決定することと、
前記ターゲット領域に対してリソース再利用を行うことにより、前記ターゲット領域を解放することと、
を含む、リソース再利用方法。
【請求項２】
前記ヒープメモリが、少なくとも１つのサービスリクエストを処理するために構成された少なくとも１つの他のサービステナントをさらに包含し、及び前記ターゲットテナントと前記少なくとも１つの他のサービステナントとの間に参照関係が存在しない、請求項１に記載の方法。
【請求項３】
前記少なくとも１つの他のサービステナントが、静的変数を共有し、並びに、前記方法が、
前記静的変数が前記ヒープメモリに保存されていることに応答して、前記静的変数が、前記少なくとも１つの他のサービステナントと前記ターゲットテナントとの間で分離され得るか否かを決定することと、
前記静的変数が、前記少なくとも１つの他のサービステナントと前記ターゲットテナントとの間で分離され得るという前記決定に応答して、前記少なくとも１つの他のサービステナント及び前記ターゲットテナントの各サービステナント領域に前記静的変数のコピーを保存することと、
をさらに含む、請求項２に記載の方法。
【請求項４】
前記静的変数が、前記少なくとも１つの他のサービステナントと前記ターゲットテナントとの間で分離することができないという前記決定に応答して、前記ヒープメモリのルートテナント領域に前記静的変数を保存することをさらに含み、前記ルートテナント領域が、ルートテナントのオブジェクトを保存し、並びに前記ルートテナントが、前記少なくとも１つの他のサービステナント及び前記ターゲットテナントに、実行のためのリソースを提供する、請求項３に記載の方法。
【請求項５】
前記ターゲットテナントが、第１のターゲットテナントを包含し、及び
前記第１のターゲットテナントが、空間占有ランキングに従って決定され、前記空間占有ランキングが、前記ヒープメモリにおいてyoung世代オブジェクトを保存するための第１のメモリ領域における前記サービステナントによって占有されるストレージ空間の大きい順に前記サービステナントをソートすることによって取得され、又は
前記第１のターゲットテナントが、前記第１のメモリ領域においてサービステナントによって現在占有される前記ストレージ空間のサイズに従って決定され、又は
前記第１のターゲットテナントが、予め設定されたテナント再利用順序に従って決定され、前記予め設定されたテナント再利用順序が、前記第１のメモリ領域における、前記サービステナントに対応する前記領域に対してリソース再利用動作を行うための予め設定されたシーケンスである、請求項２〜４の何れか一項に記載の方法。
【請求項６】
前記ターゲット領域として、前記ヒープメモリにおいて前記ターゲットテナントに対応する前記メモリ領域を決定することが、
前記第１のメモリ領域において前記第１のターゲットテナントに対応するメモリ領域を第１のターゲット領域として決定することであって、前記第１のターゲット領域が、new世代オブジェクト領域及び第１のsurvivor領域を含むことをさらに含み、並びに
前記ターゲット領域に対してリソース再利用を行うことにより、前記ターゲット領域を解放することが、
前記第１のターゲット領域における第１の利用可能オブジェクトを決定することと、
前記第１のターゲット領域の前記new世代オブジェクト領域及び前記第１のsurvivor領域から、前記決定された第１の利用可能オブジェクトを除去することと、
前記第１の利用可能オブジェクトに関する前記ルートテナント領域における参照アドレスを更新することと、
前記第１のターゲット領域における前記new世代オブジェクト領域及び前記第１のsurvivor領域を解放することと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記第１のターゲット領域における第１の利用可能オブジェクトを決定することが、
前記第１のターゲットテナントに対応するルートオブジェクトを決定することと、
前記第１のターゲット領域において、前記ルートオブジェクトによって参照されるオブジェクトを前記第１の利用可能オブジェクトとして決定することと、
をさらに含む、請求項６に記載の方法。
【請求項８】
前記ヒープメモリが、old世代オブジェクトを保存するための第２のメモリ領域をさらに含み、並びに
前記第１のターゲット領域における前記new世代オブジェクト領域及び前記第１のsurvivor領域を解放した後に、前記方法が、
第２のターゲットテナントに対応するテナントメモリ領域をマーキングすることであって、前記第２のターゲットテナントが、予め設定されたコンカレントマーキング条件を満たす前記第２のメモリ領域におけるストレージ空間を占有するサービステナントであることをさらに含む、請求項７に記載の方法。
【請求項９】
前記第２のターゲットテナントに対応する前記テナントメモリ領域をマーキングすることが、
前記第２のターゲットテナントに対応するルートオブジェクトに従って、前記第２のターゲットテナントに対応する前記サービステナント領域における第２の利用可能オブジェクトを決定することと、
前記第２の利用可能オブジェクトを参照する第３の利用可能オブジェクトを決定することと、
前記第２の利用可能オブジェクト、前記第３の利用可能オブジェクト、及び前記第３の利用可能オブジェクトを決定する前記プロセスにおける前記第２のターゲットテナントのオブジェクト参照関係の変化に従って、第４の利用可能オブジェクトを決定することと、
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記ターゲット領域として、前記ヒープメモリにおいて前記ターゲットテナントに対応する前記メモリ領域を決定することが、
第２のターゲット領域として、前記第２のターゲットテナントに対応する各メモリ領域におけるターゲットメモリ領域を決定することであって、前記ターゲットメモリ領域が、前記サービステナント領域における、前記保存された第４の利用可能オブジェクトが予め設定されたストレージ条件を満たすメモリ領域であることをさらに含み、及び
前記ターゲット領域に対してリソース再利用を行うことが、
第５の利用可能オブジェクトとして、前記第２のターゲット領域における利用可能オブジェクトを決定することと、
前記第２のターゲット領域から前記第５の利用可能オブジェクトを除去することと、
前記第５の利用可能オブジェクトに関する前記ルートテナント領域における参照アドレスを更新することと、
前記第２のターゲット領域を解放することと、
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記ルートテナント領域のメモリフラグメンテーションの度合いが、フラグメンテーション閾値を超えることに応答して、リソース再利用を前記ヒープメモリに対して行うことをさらに含む、請求項１０に記載の方法。
【請求項１２】
ターゲット領域として、ヒープメモリにおいてターゲットテナントに対応するメモリ領域を決定するように構成された第１の決定ユニットと、
前記ターゲット領域に対してリソース再利用を行うことにより、前記ターゲット領域を解放するように構成された再利用ユニットと、
を含む、リソース再利用装置。
【請求項１３】
前記ヒープメモリが、少なくとも１つのサービスリクエストを処理するために構成された少なくとも１つの他のサービステナントをさらに包含し、及び前記ターゲットテナントと前記少なくとも１つのサービステナントとの間に参照関係が存在しない、請求項１２に記載の装置。
【請求項１４】
前記少なくとも１つのサービステナントが、静的変数を共有し、前記装置が、
前記静的変数が前記ヒープメモリに保存されていることに応答して、前記静的変数が、前記少なくとも１つのサービステナントと前記ターゲットテナントとの間で分離され得るか否かを決定するように構成された決定ユニットと、
前記静的変数が、前記少なくとも１つのサービステナントと前記ターゲットテナントとの間で分離され得るという前記決定に応答して、前記少なくとも１つのサービステナント及び前記ターゲットテナントの各サービステナント領域に前記静的変数のコピーを保存するように構成された第１のストレージユニットと、
をさらに含む、請求項１３に記載の装置。
【請求項１５】
前記装置が、
前記静的変数が、前記少なくとも１つのサービステナントと前記ターゲットテナントとの間で分離することができないという前記決定に応答して、前記ヒープメモリのルートテナント領域に前記静的変数を保存するように構成された第２のストレージユニットをさらに含み、
前記ルートテナント領域が、ルートテナントのオブジェクトを保存し、及び前記ルートテナントが、前記サービステナントに、実行のためのリソースを提供する、請求項１４に記載の装置。
【請求項１６】
前記ターゲットテナントが、第１のターゲットテナントを含み、及び
前記第１のターゲットテナントが、空間占有ランキングに従って決定され、前記空間占有ランキングが、前記ヒープメモリにおいてyoung世代オブジェクトを保存するための第１のメモリ領域における前記サービステナントによって占有されるストレージ空間の大きい順に前記サービステナントをソートすることによって取得され、又は
前記第１のターゲットテナントが、前記第１のメモリ領域において前記サービステナントによって現在占有される前記ストレージ空間のサイズに従って決定され、又は
前記第１のターゲットテナントが、予め設定されたテナント再利用順序に従って決定され、前記予め設定されたテナント再利用順序が、前記第１のメモリ領域における、前記サービステナントに対応する前記領域に対してリソース再利用動作を行うための予め設定されたシーケンスである、請求項１１〜１５の何れか一項に記載の装置。
【請求項１７】
前記第１の決定ユニットが、前記第１のメモリ領域において前記第１のターゲットテナントに対応するメモリ領域を第１のターゲット領域として決定するようにさらに構成され、前記第１のターゲット領域が、new世代オブジェクト領域及び第１のsurvivor領域を含み、
前記再利用ユニットが、
前記第１のターゲット領域における第１の利用可能オブジェクトを決定することと、
前記第１のターゲット領域の前記new世代オブジェクト領域及び前記第１のsurvivor領域から、前記決定された第１の利用可能オブジェクトを除去することと、
前記第１の利用可能オブジェクトに固有の前記ルートテナント領域における参照アドレスを更新することと、
前記第１のターゲット領域における前記new世代オブジェクト領域及び前記第１のsurvivor領域を解放することと、
を行うようにさらに構成される、請求項１６に記載の装置。
【請求項１８】
前記再利用ユニットが、前記第１のターゲットテナントに対応するルートオブジェクトを決定することと、
前記第１のターゲット領域において、前記ルートオブジェクトによって参照されるオブジェクトを前記第１の利用可能オブジェクトとして決定することと、
を行うようにさらに構成される、請求項１７に記載の装置。
【請求項１９】
前記ヒープメモリが、old世代オブジェクトを保存するための第２のメモリ領域をさらに含み、並びに
前記装置が、前記第１のターゲット領域における前記new世代オブジェクト領域及び前記第１のsurvivor領域を解放した後に、第２のターゲットテナントに対応するテナントメモリ領域をマーキングするように構成されたマーキングユニットをさらに含み、前記第２のターゲットテナントが、予め設定されたコンカレントマーキング条件を満たす前記第２のメモリ領域におけるストレージ空間を占有するサービステナントである、請求項１７に記載の装置。
【請求項２０】
前記マーキングユニットが、
前記第２のターゲットテナントに対応するルートオブジェクトに従って、前記第２のターゲットテナントに対応する前記サービステナント領域における第２の利用可能オブジェクトを決定することと、
前記第２の利用可能オブジェクトを参照する第３の利用可能オブジェクトを決定することと、
前記第２の利用可能オブジェクト、前記第３の利用可能オブジェクト、及び前記第３の利用可能オブジェクトを決定する前記プロセスにおける前記第２のターゲットテナントのオブジェクト参照関係の変化に従って、第４の利用可能オブジェクトを決定することと、
を行うようにさらに構成される、請求項１９に記載の装置。
【請求項２１】
前記第１の決定ユニットが、第２のターゲット領域として、前記第２のターゲットテナントに対応する各メモリ領域におけるターゲットメモリ領域を決定するようにさらに構成され、前記ターゲットメモリ領域が、前記サービステナント領域における、前記保存された第４の利用可能オブジェクトが予め設定されたストレージ条件を満たすメモリ領域であり、及び
前記再利用ユニットが、第５の利用可能オブジェクトとして、前記第２のターゲット領域における利用可能オブジェクトを決定することと、
前記第２のターゲット領域から前記第５の利用可能オブジェクトを除去することと、
前記第５の利用可能オブジェクトに関する前記ルートテナント領域における参照アドレスを更新することと、
前記第２のターゲット領域を解放することと、
を行うようにさらに構成される、請求項２０に記載の装置。
【請求項２２】
前記装置が、前記ルートテナント領域のメモリフラグメンテーションの度合いが、設定されたフラグメンテーション閾値を超えることに応答して、リソース再利用を前記ヒープメモリに対して行うように構成されたグローバル再利用ユニットをさらに含む、請求項２１に記載の装置。
【請求項２３】
電子デバイスにリソース再利用方法を行わせるための、前記デバイスの少なくとも１つのプロセッサによって実行可能な命令セットを保存する非一時的コンピュータ可読媒体であって、前記方法が、
ターゲット領域として、ヒープメモリによって包含されるターゲットテナントに対応するメモリ領域を決定することと、
前記ターゲット領域に対してリソース再利用を行うことにより、前記ターゲット領域を解放することと、
を含む、非一時的コンピュータ可読媒体。
【請求項２４】
前記ヒープメモリが、少なくとも１つのサービスリクエストを処理するために構成された少なくとも１つの他のサービステナントをさらに包含し、及び前記ターゲットテナントと前記少なくとも１つの他のサービステナントとの間に参照関係が存在しない、請求項２３に記載の非一時的コンピュータ可読媒体。
【請求項２５】
前記少なくとも１つの他のサービステナントが、静的変数を共有し、前記命令セットが、
前記静的変数が前記ヒープメモリに保存されていることに応答して、前記静的変数が、前記少なくとも１つの他のサービステナントと前記ターゲットテナントとの間で分離され得るか否かを決定することと、
前記静的変数が、前記少なくとも１つの他のサービステナントと前記ターゲットテナントとの間で分離され得るという前記決定に応答して、前記少なくとも１つの他のサービステナント及び前記ターゲットテナントの各サービステナント領域に前記静的変数のコピーを保存することと、
を前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能である、請求項２４に記載の非一時的コンピュータ可読媒体。
【請求項２６】
前記命令セットが、
前記静的変数が、前記少なくとも１つの他のサービステナントと前記ターゲットテナントとの間で分離することができないという前記決定に応答して、前記ヒープメモリのルートテナント領域に前記静的変数を保存することを前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能であり、
前記ルートテナント領域が、ルートテナントのオブジェクトを保存し、前記ルートテナントが、前記少なくとも１つの他のサービステナント及び前記ターゲットテナントに、実行のためのリソースを提供する、請求項２５に記載の非一時的コンピュータ可読媒体。
【請求項２７】
前記ターゲットテナントが、第１のターゲットテナントを包含し、及び
前記第１のターゲットテナントが、空間占有ランキングに従って決定され、前記空間占有ランキングが、前記ヒープメモリにおいてyoung世代オブジェクトを保存するための第１のメモリ領域における前記サービステナントによって占有されるストレージ空間の大きい順に前記サービステナントをソートすることによって取得され、又は
前記第１のターゲットテナントが、前記第１のメモリ領域においてサービステナントによって現在占有される前記ストレージ空間のサイズに従って決定され、又は
前記第１のターゲットテナントが、予め設定されたテナント再利用順序に従って決定され、前記予め設定されたテナント再利用順序が、前記第１のメモリ領域における、前記サービステナントに対応する前記領域に対してリソース再利用動作を行うための予め設定されたシーケンスである、請求項２４〜２６の何れか一項に記載の非一時的コンピュータ可読媒体。
【請求項２８】
前記命令セットが、
前記第１のメモリ領域において前記第１のターゲットテナントに対応するメモリ領域を第１のターゲット領域として決定することであって、前記第１のターゲット領域が、new世代オブジェクト領域及び第１のsurvivor領域を含むこと、
によって、ヒープメモリにおけるターゲットテナントに対応するメモリ領域をターゲット領域として決定することを前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能であり、並びに
前記命令セットが、
前記第１のターゲット領域における第１の利用可能オブジェクトを決定することと、
前記第１のターゲット領域の前記new世代オブジェクト領域及び前記第１のsurvivor領域から、前記決定された第１の利用可能オブジェクトを除去することと、
前記第１の利用可能オブジェクトに関する前記ルートテナント領域における参照アドレスを更新することと、
前記第１のターゲット領域における前記new世代オブジェクト領域及び前記第１のsurvivor領域を解放することと、
によって、前記ターゲット領域に対してリソース再利用を行うことにより、前記ターゲット領域を解放することを前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能である、請求項２７に記載の非一時的コンピュータ可読媒体。
【請求項２９】
前記命令セットが、
前記第１のターゲットテナントに対応するルートオブジェクトを決定することと、
前記第１のターゲット領域において、前記ルートオブジェクトによって参照されるオブジェクトを前記第１の利用可能オブジェクトとして決定することと、
によって、前記第１のターゲット領域における第１の利用可能オブジェクトを決定することを前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能である、請求項２８に記載の非一時的コンピュータ可読媒体。
【請求項３０】
前記ヒープメモリが、old世代オブジェクトを保存するための第２のメモリ領域をさらに含み、
前記第１のターゲット領域における前記new世代オブジェクト領域及び前記第１のsurvivor領域を解放した後に、前記命令セットが、
第２のターゲットテナントに対応するテナントメモリ領域をマーキングすることであって、前記第２のターゲットテナントが、予め設定されたコンカレントマーキング条件を満たす前記第２のメモリ領域におけるストレージ空間を占有するサービステナントであることを前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能である、請求項２９に記載の非一時的コンピュータ可読媒体。
【請求項３１】
前記命令セットが、
前記第２のターゲットテナントに対応するルートオブジェクトに従って、前記第２のターゲットテナントに対応する前記サービステナント領域における第２の利用可能オブジェクトを決定することと、
前記第２の利用可能オブジェクトを参照する第３の利用可能オブジェクトを決定することと、
前記第２の利用可能オブジェクト、前記第３の利用可能オブジェクト、及び前記第３の利用可能オブジェクトを決定する前記プロセスにおける前記第２のターゲットテナントのオブジェクト参照関係の変化に従って、第４の利用可能オブジェクトを決定することと、
によって、前記第２のターゲットテナントに対応する前記テナントメモリ領域をマーキングすることを前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能である、請求項３０に記載の非一時的コンピュータ可読媒体。
【請求項３２】
前記命令セットが、
第２のターゲット領域として、前記第２のターゲットテナントに対応する各メモリ領域におけるターゲットメモリ領域を決定することであって、前記ターゲットメモリ領域が、前記サービステナント領域における、前記保存された第４の利用可能オブジェクトが予め設定されたストレージ条件を満たすメモリ領域であること、
によって、ターゲット領域として、ヒープメモリにおいてターゲットテナントに対応するメモリ領域を決定することを前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能であり、及び
前記命令セットが、
第５の利用可能オブジェクトとして、前記第２のターゲット領域における利用可能オブジェクトを決定することと、
前記第２のターゲット領域から前記第５の利用可能オブジェクトを除去することと、
前記第５の利用可能オブジェクトに関する前記ルートテナント領域における参照アドレスを更新することと、
前記第２のターゲット領域を解放することと、
によって、前記ターゲット領域に対してリソース再利用を行うことを前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能である、請求項３１に記載の非一時的コンピュータ可読媒体。
【請求項３３】
前記命令セットが、
前記ルートテナント領域のメモリフラグメンテーションの度合いが、フラグメンテーション閾値を超えることに応答して、リソース再利用を前記ヒープメモリに対して行うことを前記デバイスにさらに行わせるために、前記デバイスの前記少なくとも１つのプロセッサによって実行可能である、請求項３２に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[1]  本開示は、その全体が参照により本明細書に援用される、２０１７年２月２０日に出願された中国特許出願第２０１７１００９０４８２．８号に対する優先権の便益を主張するものである。
【背景技術】
【０００２】
背景
[2]  オブジェクト指向プログラムが実行されると、その機能は、作成されたオブジェクトによって実施され、及び各作成されたオブジェクトは、特定のメモリリソースを占有し得る。あるオブジェクトが必要でなくなれば、そのオブジェクトは、そのオブジェクトで占有されたメモリリソースを解放するために消去され得る。このプロセスは、ガーベージコレクション（ＧＣ：Garbage Collection）プロセスと呼ばれ得る。
【０００３】
[3]  Java（登録商標）バーチャルマシン（ＪＶＭ）を例にとると、同じＪＶＭにおいて展開された全てのアプリケーションのオブジェクトは、メモリのJavaヒープ（ヒープメモリ）に全て保存される。Javaヒープに対してガーベージコレクションが行われると、ＪＶＭは、ガーベージコレクション動作を実行するプログラムを除くアプリケーションプログラムのスレッドを一時停止することができ、及び次に、ガーベージコレクションがヒープメモリ全体に行われることにより、使用不能オブジェクトによって占有されるメモリ空間が解放される。
【０００４】
[4]  ガーベージコレクションのプロセスにおいて、ガーベージコレクション動作を実行するプログラムを除くプログラムの実行が一時停止される。従って、ＪＶＭにおけるプログラムは、外部サービスを提供することができない。Java（商標）以外の言語で書かれた幾つかのアプリケーションプログラムの場合にも、バーチャルマシンにおけるプログラムがガーベージコレクション中に外部サービスを提供できないという問題が同様に存在し得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
[5]  本出願の実施形態は、リソース再利用方法を提供する。この方法は、ターゲット領域として、ヒープメモリにおけるターゲットテナントに対応するメモリ領域を決定することと、ターゲット領域に対してリソース再利用を行うことにより、ターゲット領域を解放することとを包含し得る。
【０００６】
[6]  本出願の実施形態は、リソース再利用装置をさらに提供する。この装置は、ターゲット領域として、ヒープメモリにおけるターゲットテナントに対応するメモリ領域を決定するように構成された第１の決定ユニットと、ターゲット領域に対してリソース再利用を行うことにより、ターゲット領域を解放するように構成された再利用ユニットとを包含し得る。
【０００７】
[7]  本出願の実施形態で用いられる上記の少なくとも１つの技術的解決策は、以下のような有益な効果を達成し得る。
【０００８】
[8]  リソース再利用がヒープメモリに対して行われる場合、ターゲットテナントに対応するメモリ領域のみが再利用される。ターゲットテナントは、ヒープメモリに対応するテナント中の１つ又は複数のテナントでもよい。次いで、ターゲットテナントを除くテナントのメモリ領域は、再利用されなくてもよい。このようにして、ターゲットテナントを除くテナントのスレッドは、外部サービスを提供するために通常通りに実行され得る。
【０００９】
図面の簡単な説明
[9]  本出願のさらなる理解をもたらし、及び本出願の一部を構成するように、本明細書に記載される添付の図面が使用される。本出願の概略の実施形態及びそれらの説明は、本出願を説明するために使用され、及び本出願に対する不適切な限定を構成しない。
【図面の簡単な説明】
【００１０】
【図１】[10]バーチャルマシンが実行される際の、Javaバーチャルマシンと、メモリの部分との間の関係の概略図を示す。
【図２】[11]本出願の実施形態による、ヒープメモリの分割の概略図を示す。
【図３】[12]本出願の実施形態による、リソース再利用方法の実施の概略フローチャートを示す。
【図４】[13]本出願の実施形態による、バーチャルマシンにおけるルートテナントとサービステナントとの間の関係の概略図を示す。
【図５】[14]本出願の実施形態による、ヒープメモリの分割の概略図を示す。
【図６】[15]本出願の実施形態による、静的変数ストレージ領域の概略図を示す。
【図７】[16]本出願の実施形態による、リソース再利用方法の第１の再利用段階の概略フローチャートである。
【図８】[17]本出願の実施形態による、第１の再利用段階の実行の前後のオブジェクトの変更の概略図を示す。
【図９】[18]本出願の実施形態による、コンカレントマーキングの実施の概略フローチャートである。
【図１０】[19]本出願の実施形態による、リソース再利用方法の第２の再利用段階の概略フローチャートである。
【図１１】[20]本出願の実施形態による、第２の再利用段階で利用可能オブジェクトが決定される時のオブジェクト間の関係の概略図を示す。
【図１２】[21]本出願の実施形態による、様々な段階におけるリソース再利用方法のスレッド実行状態の概略図を示す。
【図１３】[22]本出願の実施形態による、リソース再利用装置の例示的構造概略図を示す。
【発明を実施するための形態】
【００１１】
詳細な説明
[23]  本出願の目的、技術的解決策及び利点をより明確にするために、具体的な実施形態及び本出願の対応する添付の図面を参照して、本出願の技術的解決策を以下に明確且つ完全に説明する。記載する実施形態は、本出願の実施形態の全てではなく、一部にすぎないことは明白である。本出願の実施形態に基づいて、創造的な努力なしに当業者によって得られる全ての他の実施形態が、本出願の保護範囲に属する。
【００１２】
[24]  本出願の様々な実施形態において提供される技術的解決策は、添付の図面を参照して以下に詳細に記載される。
【００１３】
[25]  オブジェクト指向ソフトウェア開発方法は、これまで数十年に及ぶ発展を経てきた。オブジェクト指向ソフトウェアプログラミング言語において、Java（商標）は、その代表であり、オブジェクト指向理論を実施し得る。Javaで書かれたプログラムは、ＪＶＭによって実行され得る。ＪＶＭがJavaプログラムを実行すると、ＪＶＭによって管理されるメモリは、幾つかの異なるデータ領域に分割され得る。これらの領域は、それぞれ独自の用途を有する。ＪＶＭによって管理されるメモリは、メソッド領域、バーチャルマシンスタック、ローカルメソッドスタック、Javaヒープ、及びプログラムカウンタを包含し得る。図１に示すように、ＪＶＭの実行中のメモリの様々なブロックが提供される。
【００１４】
[26]  ほとんどの状況下で、Javaヒープ（例えば、ヒープメモリ）は、ＪＶＭによって管理されるメモリにおける最大のブロックである。Javaヒープは、全スレッドによって共有されるメモリ領域であり、バーチャルマシンが開始されると作成され得る。このメモリ領域は、オブジェクトインスタンスを保存するために使用され、メモリは、Javaヒープ内のほとんど全てのオブジェクトインスタンスに割り当てられ得る。Javaヒープ内の使用不能オブジェクトを消去することによってメモリ空間を解放するために、ガーベージコレクションがJavaヒープに対して行われ得る。ガーベージコレクション動作は、使用不能オブジェクトによって占有されるメモリリソースを解放することができる。従って、ガーベージコレクションプロセスは、リソース再利用とも呼ばれ得る。
【００１５】
[27]  上述の通り、従来、リソース再利用のプロセスにおいて、ヒープメモリ全体が再利用される。再利用のプロセスにおいて、ガーベージコレクション動作を実行するプログラムを除くアプリケーションプログラムのスレッドを一時停止することが必要である。従って、オブジェクト参照の変更、又は新しいオブジェクトの作成が、アプリケーションの実行により引き起こされることはなく、それによって、利用可能オブジェクトの消去などの問題を回避し得る。従って、ガーベージコレクション中は、ＪＶＭにおけるアプリケーションプログラムは、外部サービスを提供することができない。この段階は、完全一時停止段階（すなわち、「世界を停止させる」）とも呼ばれる。ヒープ内に大量のガーベージがある場合には、ガーベージコレクションのプロセスは、長時間かかり得る。従って、ＪＶＭにおけるアプリケーションプログラムのサービスリクエストがあれば、アプリケーションプログラムの応答時間も比較的長くなり得る。
【００１６】
[28]  同様に、他の言語で書かれた幾つかのアプリケーションプログラムも、アプリケーションプログラムがガーベージコレクション中に外部サービスを提供することができないという問題を有し得る。この問題を解決するために、本出願は、テナントからのリソースを再利用するためのリソース再利用方法を提供する。
【００１７】
[29]  テナントは、論理的に同じアプリケーションに仕えるスレッドのセットを包含し得る。テナント及びアプリケーションは、２つの同等の概念であり得る。サービスが異なるサービス論理に従って分類され得るので、テナントも、異なるタイプにより分類され得る。例えば、あるアプリケーションプログラムは、同時に複数のユーザに対してビジネスサービスを提供し得る。この場合、ユーザのタイプに従って、同じユーザに仕えるアプリケーションプログラムのスレッドのセットが、テナントと見なされ得る。
【００１８】
[30]  本出願の実施形態では、サービスリクエストを受け取ると、サービスリクエストに対応するアプリケーションプログラムに従って、ヒープメモリにテナントを作成することができる。テナントを使用して、サービスリクエストを処理することができる。テナントは、それぞれ、異なるユーザのサービスリクエストに基づいて、ユーザのサービスリクエストを処理するために、ヒープメモリ内に作成され得る。テナントは、同じシステム又はプログラムコンポーネントを共有し得る。そして、テナントに対応するユーザ間のデータの分離が、依然として保証され得る。
【００１９】
[31]  テナントがヒープメモリに保存されるとき、異なるテナントのオブジェクトが、ヒープメモリの異なるメモリ領域に保存され得る。従って、ユーザの一部によって占有されるメモリ領域に対してリソース再利用を行うことができる。テナントのオブジェクトがヒープメモリに保存される前に、ヒープメモリが複数のメモリ領域に分割され得ることが認識される。
【００２０】
[32]  そのとき、単一のテナントは、ヒープメモリに少なくとも１つのメモリ領域を所有し得る。単一のテナントが複数のメモリ領域を所有する場合、それらの複数のメモリ領域は、論理的に連続した、又は非連続のメモリ領域でもよい。リソース再利用において、分割された単一の領域は、最小ユニットとなり得る。従って、本出願における単一のテナントによって所有されるメモリ領域は、そのテナントのオブジェクトのみを保存し得るので、リソース再利用がターゲットテナントに対して行われる際に、他のテナントのスレッドの実行は影響を受けない。図２に示されるように、ヒープメモリは、複数の領域に分割され、テナントＡ及びテナントＢは、それぞれのオブジェクトを保存するためのメモリ領域をそれぞれ所有する。
【００２１】
[33]  本出願によるリソース再利用方法を以下に詳細に説明する。本方法は、サーバ又は端末デバイスによって行われ得る。さらに、本方法は、本出願によるリソース再利用方法を実施するアプリケーションプログラムによっても行われ得る。例えば、本方法は、リソース再利用プログラムなどによって行われ得る。説明を簡単にするために、本方法がリソース再利用プログラムによって行われる場合を例にとり、本方法の実施のやり方を以下に紹介する。本方法がリソース再利用プログラムによって行われることが、単なる例として記載され、及び本方法に対する限定として理解されるものではないことが理解され得る。
【００２２】
[34]  図３は、本出願の実施形態によるリソース再利用方法の実施の概略フローチャートを示す。リソース再利用方法は、ステップＳ１０１及びＳ１０２を包含し得る。
【００２３】
[35]  ステップＳ１０１では、ヒープメモリにおけるターゲットテナントに対応するメモリ領域は、ターゲット領域として決定され得る。
【００２４】
[36]  ターゲットテナントは、ヒープメモリに対応するテナント中の１つ又は複数のテナントを包含し得る。例えば、ターゲットテナントは、ヒープメモリに対応する全てのテナント中の１つのテナントでもよく、又はヒープメモリに対応する全てのテナント中の幾つかのテナントでもよい。リソース再利用の様々な段階に関連して、ターゲットテナントを決定するやり方を以下に詳細に説明する。
【００２５】
[37]  ステップＳ１０２では、リソース再利用が、ターゲット領域を解放するためにターゲット領域に対して行われ得る。
【００２６】
[38]  リソース再利用がターゲット領域に対して行われると、ターゲットテナントのスレッドが停止され得る。このようにして、ターゲットテナントのサービスを進めることができない。しかし、ターゲットテナントに対応するメモリ領域のみが再利用され、ターゲットテナントは、ヒープメモリに対応するテナント中の１つ又は複数のテナントであるので、他のサービステナントのスレッドを一時停止する必要はない。従って、ターゲットテナントに対応するメモリ領域が消去されているときに、他のサービステナントのサービスリクエスト処理が、影響を受けないことが可能である。
【００２７】
[39]  ターゲットテナントと他のサービステナントとの間に参照関係が存在すれば、ターゲットテナント及び他のサービステナントは、参照関係において分離され得ることに留意されたい。例えば、サービステナントは、サービステナントが互いに参照しないことを保証するために、参照関係において分離され得る。しかし、テナント間で論理的に分離することができない幾つかのオブジェクトは、共通リソースとして共通メモリ領域に保存され得る。
【００２８】
[40]  ヒープメモリにおけるテナントの上記分離に基づいて、ヒープメモリは、サービステナント領域とルートテナント領域とに分割され得る。サービステナント領域は、サービステナントのオブジェクトを保存するために使用される。ここでのサービステナントは、サービスリクエストを処理するためのテナントであり、サービステナント間に参照関係は存在しない。サービステナントがユーザのタイプに従って分類され得るので、サービステナントは、ユーザテナントと呼ばれ得る。ルートテナント領域は、ルートテナントのオブジェクトを保存するための共通メモリ領域となり得る。ルートテナントは、サービステナントに、実行中に必要とされる共通リソースを提供し得る。例えば、ルートテナントは、バーチャルマシンにおける共通スレッドプール及び共有メンバー変数などのリソースを包含し得る。
【００２９】
[41]  図４は、本出願の実施形態による、バーチャルマシンにおけるルートテナントとサービステナントとの間の関係の概略図を示す。図４では、サービステナント１、サービステナント２、及びサービステナント３は全て、ルートテナントにおけるオブジェクトを参照することが可能であり、これらのサービステナント間の相互参照関係は存在しない。
【００３０】
[42]  図５は、本出願の実施形態による、ヒープメモリの分割の概略図を示す。ヒープメモリは、複数の領域に分割される。テナントＡ及びテナントＢは、それぞれのオブジェクトを保存するためのメモリ領域をそれぞれ所有する。一方、ルートテナントも、共通リソースを保存するためのメモリ領域を所有し、テナントＡとテナントＢとの間の参照関係は存在しない。テナントＡ及びテナントＢは共に、ルート領域におけるオブジェクトを参照し得る。
【００３１】
[43]  幾つかの実施形態では、２つの独立展開されたテナントが、ClassLoaderによって分離され得る。例えば、Java（商標）のTomcatプロジェクトにおいて、２つの独立展開Warテナントは、ClassLoaderの分離により互いの変数を参照しない。
【００３２】
[44]  サービステナントによって共有される静的変数がヒープメモリに保存されると、静的変数がサービス論理の観点からサービステナント間で分離され得るか否かが、最初に決定され得る。ThreadLocalオブジェクトも、静的変数と見なされ得る。この決定は、静的変数のタイプによって行われ得る。静的変数のタイプは、静的変数がサービステナント間で分離され得るか否かを決定し得る。
【００３３】
[45]  静的変数がサービス論理の観点からサービステナント間で分離され得る場合には、静的変数は、サービステナントのそれぞれのサービステナント領域に保存され得る。静的変数を参照するサービステナントのそれぞれは、静的変数のコピーを保持することができ、これらのコピーは、サービステナントのそれぞれのサービステナント領域に別々に保存され得る。静的変数が、例えばサービス論理の観点からサービステナント間で分離できない場合には、静的変数は、ルートテナント領域に保存され得る。従って、テナントは、依然として静的変数を共有し得る。従って、サービステナントのスレッドが、リソース再利用を行っているターゲットテナントの静的変数にアクセスすることを防止することができ、それによって、サービステナントのサービスに影響を与えることが回避される。
【００３４】
[46]  静的変数が論理的に分離され得る場合には、静的変数に対してサービステナントによって行われる動作は、分離後の他のサービステナントのサービスの通常動作に影響を与えないことが可能である。例えば、静的変数は、ユーザのＩＤカード番号に対応する。ユーザのＩＤカード番号が不変であるので、ＩＤカード番号に対してサービステナントによって行われる動作は、他のサービステナントのサービスの通常動作に影響を与えないことが可能である。静的変数が論理的に分離できない場合には、静的変数に対してサービステナントによって行われる動作は、他のサービステナントのサービスの通常動作に影響を与え得る。例えば、静的変数は、口座残高に対応する。サービステナントが口座残高を変更した後に、残高に対応する静的変数が、サービステナント間で分離される場合には、他のサービステナントの残高は、依然として、変更前の残高である場合があり、従って、これは、他のサービステナントのサービスの通常動作に影響を与え得る。
【００３５】
[47]  例えば、図６に示すように、「Foo」クラスの変数は、サービステナント間で論理的に分離され得る。「Foo」クラスのメタデータのポインタは、それぞれ、テナントＡ及びテナントＢにおける「Foo」クラスの静的変数のコピーに向けられる。従って、テナントＡ及びテナントＢは共に、それぞれのサービステナント領域に、「Foo」クラスの静的変数を保存する。さらに図６を参照して、例えば、「Bar」クラスの静的変数は、サービステナント間で論理的に分離することができない。「Bar」クラスのメタデータのポインタは、ルートテナント領域における静的変数に向けられる。このとき、サービス処理中に、テナントＢのスレッドは、それのサービステナント領域に保存された「Foo」クラスの静的変数のコピーを呼び出し、テナントＡのスレッドは、それのサービステナント領域に保存された「Foo」クラスの静的変数のコピーを呼び出し、テナントＡ及びテナントＢは共に、ルートテナント領域に保存された「Bar」クラスの静的変数を呼び出すことができる。
【００３６】
[48]  アプリケーションを実行する前に、全アプリケーションのスレッドが、ルートテナントコンテキストで実行され得ることに留意されたい。従って、サービス処理リクエストを受け取ると、サービスリクエストによって要求されたアプリケーション及びテナントに対応するテナントに従って、オブジェクトが作成され得る。オブジェクトは、サービスリクエストを処理するために、サービステナント領域におけるテナントが属する領域に作成される。
【００３７】
[49]  本出願によるリソース再利用方法を、本出願の実施形態におけるリソース再利用プロセスの４つの段階と組み合わせて、以下に詳細に説明する。
【００３８】
[50]  第１の段階は、第１の再利用段階でもよく、これは、Young世代コレクション（Young GC）段階とも呼ばれ得る。ヒープメモリは、ヒープメモリに保存されたオブジェクトの残存期間に従って分割され、ヒープメモリは、第１のメモリ領域を包含する。第１のメモリ領域は、young世代オブジェクトを保存するためのヒープメモリにおけるストレージ領域である。第１のメモリ領域は、new世代オブジェクトを保存するためのnew世代オブジェクト領域（例えば、Eden領域）、並びに第１のsurvivor領域（例えば、From領域）及び第２のsurvivor領域（例えば、To領域）を包含し得る。すなわち、新しいオブジェクトが生成されると、この新しいオブジェクトは、new世代オブジェクト領域に保存され得る。新しく生成されたオブジェクトのほとんどが、１つのタスクの実行後、短期間のうちに再度利用されない可能性があるので、リソース再利用動作は、第１のメモリ領域に対して適時に行われ得る。本出願では、リソース再利用動作が第１のメモリ領域に対して行われると、リソース再利用動作がテナントのタイプに従ってターゲットテナントに対応するメモリ領域に対しても行われ得る。
【００３９】
[51]  第１のメモリ領域に対してリソース再利用を行う第１の再利用段階を以下に説明する。
【００４０】
[52]  第１のメモリ領域のストレージ状態が、第１の再利用条件を満たすと決定されると、第１の再利用段階が開始される。第１の再利用条件は、例えば、第１のメモリ領域が利用可能なストレージ空間を持たないこと、第１のメモリ領域におけるストレージ量が設定された閾値に達すること、又は第１のメモリ領域における幾つかのテナントのストレージ量が設定された閾値に達することを包含し得る。第１の再利用条件は、本出願において限定されない。
【００４１】
[53]  説明を簡単にするために、第１の再利用段階が向けられるターゲットテナントは、第１のターゲットテナントと呼ばれ、第１のターゲットテナントは、空間占有ランキングに従って決定されるサービステナント、第１のメモリ領域においてサービステナントによって現在占有されるストレージ空間のサイズに従って決定されるサービステナント、及び予め設定されたテナント再利用順序に従って決定されるサービステナントの少なくとも１つを包含する。
【００４２】
[54]  空間占有ランキングに従って決定されるサービステナントに関して、空間占有ランキングは、第１のメモリ領域におけるサービステナントによって占有されるストレージ空間の大きい順にサービステナントをソートすることによって取得される。例えば、第１の再利用段階を開始させるトリガ条件が、第１のメモリ領域が利用可能な空間を持たないことである場合には、サービステナントは、第１のメモリ領域におけるサービステナントによって占有されるストレージ空間の大きい順にソートされ得る。リソース再利用が、まず、第１のメモリ領域における最も大きいストレージ空間を占有するサービステナントに対応するメモリ空間に対して行われる必要がある場合には、第１のメモリ領域における最も大きいストレージ空間を占有するサービステナントが、第１のターゲットテナントである。リソース再利用が、第１のメモリ領域における二番目に大きいストレージ空間を占有するサービステナントに対応するメモリ空間に対して行われる場合には、第１のメモリ領域における二番目に大きいストレージ空間を占有するサービステナントが、第１のターゲットユーザである。
【００４３】
[55]  第１のメモリ領域においてサービステナントによって現在占有されるストレージ空間のサイズに従って決定されるサービステナントの場合、例えば、第１の再利用段階を開始させるトリガ条件が、第１のメモリ領域における単一のテナントのストレージ量が、ある設定された閾値を超えることである場合は、設定された閾値を超えるストレージ量を有するテナントが、第１のターゲットテナントである。
【００４４】
[56]  予め設定されたテナント再利用順序に従って決定されるサービステナントに関して、予め設定されたテナント再利用順序は、サービステナントに対応するメモリ領域に対してリソース再利用動作を行うための予め設定されたシーケンスでもよい。
【００４５】
[57]  すなわち、サービステナントに対応するメモリ領域に対してリソース再利用動作を行うためのシーケンスは、予め設定することができ、シーケンスに従って現時点でリソース再利用動作を行うサービステナントが、第１のターゲットテナントである。
【００４６】
[58]  図７は、本出願の実施形態によるリソース再利用方法の第１の再利用段階の概略フローチャートである。リソース再利用方法の第１の再利用段階は、Ｓ２０１〜Ｓ２０５を包含し得る。
【００４７】
[59]  ステップＳ２０１では、第１のメモリ領域における、第１のターゲットテナントに対応するメモリ領域が、第１のターゲット領域として決定され得る。すなわち、リソース再利用は、第１のターゲットテナントに対応するメモリ領域に対してのみ行われ、第１のターゲットテナントを除くサービステナントのスレッドを一時停止する必要がない。
【００４８】
[60]  ステップＳ２０２では、第１のターゲット領域における第１の利用可能オブジェクトが決定され得る。いわゆる利用可能オブジェクトは、スレッドによって使用されているオブジェクトを参照する。以下の利用可能オブジェクトとの区別を簡単にするために、第１のターゲット領域における利用可能オブジェクトは、第１の利用可能オブジェクトと呼ばれる。あるオブジェクトが利用可能であれば、そのオブジェクトは、通常、別のオブジェクトによって参照されている。従って、ルートオブジェクト（例えば、GC Root）によって参照されるオブジェクトは、利用可能オブジェクトと見なされ得る。
【００４９】
[61]  Java（商標）言語では、ルートオブジェクトは、バーチャルマシンスタックにおいて参照されるオブジェクト（例えば、スタックフレームにおけるローカル変数表）、メソッド領域におけるクラス静的属性によって参照されるオブジェクト、メソッド領域における定数によって参照されるオブジェクト、ローカルメソッドスタックにおけるＪＮＩ（例えば、一般的なNative方法）によって参照されるオブジェクト、及びルートテナント領域によって参照されるオブジェクトを包含する。
【００５０】
[62]  ステップＳ２０２では、リソース再利用が、第１のターゲットテナントに対応する第１のターゲット領域に対して行われ得るので、利用可能オブジェクトが、ルートオブジェクトの中の第１のターゲットテナントに対応するルートオブジェクトに従って決定され得る。例えば、ルートオブジェクトによって参照される第１のターゲット領域のオブジェクトが、第１の利用可能オブジェクトとして決定され得る。
【００５１】
[63]  このプロセスでは、ルートテナントの実行中のスレッドが、ルートテナントとターゲットテナントのオブジェクトとの間の参照関係を変えることを防止するために、ルートテナントのスレッドが一時停止され得る。従って、第１のターゲット領域における第１の利用可能オブジェクトが正確に決定され得る。
【００５２】
[64]  ステップＳ２０３では、決定された第１の利用可能オブジェクトが、第１のターゲット領域のnew世代オブジェクト領域及び第１のsurvivor領域から除去され得る。第１のメモリ領域における第１の利用可能オブジェクトは、第２のsurvivor領域（例えば、「To」と名付けられたsurvivor領域）にコピーされる。第１のsurvivor領域（例えば、「From」と名付けられたsurvivor領域）における利用可能オブジェクトの宛先が、それらの残存期間に従って決定され得る。例えば、「From」領域におけるオブジェクトが、予め設定された回数の第１の再利用段階を経た後にまだ利用可能である場合には、オブジェクトは、以下に記載する第２のメモリ領域（例えば、「Old」領域）へ移動され得る。予め設定された回数は、例えば、１５でもよい。
【００５３】
[65]  ステップＳ２０４では、第１の利用可能オブジェクトに固有のルートテナント領域における参照アドレスが更新される。メモリにおける第１の利用可能オブジェクトの場所が変化しているため、第１の利用可能オブジェクトが以前に別のものによって参照された参照アドレスも更新されることになり、様々な後続のサービスの通常動作が保証され得る。
【００５４】
[66]  ステップＳ２０５では、第１のターゲット領域におけるnew世代オブジェクト領域及び第１のsurvivor領域が解放され得る。第１のターゲット領域の利用可能オブジェクトがsurvivor領域に転送されているので、第１のターゲット領域の全オブジェクトが一掃され得る。第１のターゲット領域におけるnew世代オブジェクト領域及び第１のsurvivor領域が解放され得る。
【００５５】
[67]  これまでに、第１のターゲットテナントに対応するメモリ領域に関する１つのリソース再利用プロセスが完了している。このプロセスでは、リソース再利用は、第１のターゲットテナントに対応するメモリ領域に対してのみ行われる。第１のターゲットテナントのスレッドを一時停止するだけでよい一方で、他のサービステナントのスレッドが一時停止される必要がないので、他のサービステナントのサービスリクエスト処理が影響を受けないことが可能である。
【００５６】
[68]  また、本出願は、第１のターゲットテナントに対応するメモリ領域においてのみリソースを再利用することができ、この段階は、第１のターゲットテナントにとって比較的短い時間を要する。この場合、第１のターゲットテナントのサービスが影響を受け得る時間も比較的短い。従って、第１のターゲットテナントに対応するユーザの経験が改善され得る。さらに、このプロセスは、他のサービステナントのサービスリクエスト処理に影響を与えない。従って、他のサービステナントに対応するユーザも、より良い経験を持ち得る。
【００５７】
[69]  図８は、本出願の実施形態による第１の再利用段階の実行の前後のオブジェクトの変更の概略図を示す。テナントＡにおける２つの残存オブジェクトが、第１の再利用段階を経た後に、第２のsurvivor領域に移される一方で、テナントＢは、影響を受けない。同時に、ルートテナントに対するテナントＡにおける参照も更新され得る。
【００５８】
[70]  第１の再利用段階では、バーチャルマシンの幾つかの外部サービスが影響を受けない限り、リソース再利用が、少なくとも１つのサービステナントに対応するメモリ領域に対して同時に行われ得ることに留意されたい。代替的に、第１の再利用段階では、リソース再利用は、複数の第１のターゲットテナントに対応するメモリ領域に対して数回に分けて行われ得る。これは、本出願において限定されない。
【００５９】
[71]  第２の段階は、コンカレントマーキング段階とすることができる。コンカレントマーキング段階では、ヒープメモリは、ヒープメモリに保存されたオブジェクトの残存期間に従って分割され、ヒープメモリは、old世代領域とも呼ばれる、old世代オブジェクトを保存するための第２のメモリ領域（例えば、「Old」領域）をさらに包含する。第１の再利用段階の上記の説明で述べた通り、「From」と名付けられたsurvivor領域における残存オブジェクトの宛先が、それらの残存期間に従って決定され得る。例えば、「From」領域におけるオブジェクトが、１５回の第１の再利用段階を経た後にまだ利用可能である場合には、これらのオブジェクトは、第２のメモリ領域に移される。
【００６０】
[72]  第２のメモリ領域に対するリソース再利用は、主に、第２のメモリ領域におけるメモリ領域に向けられる。第２のメモリ領域におけるメモリ領域に保存された利用可能オブジェクトは、予め設定されたストレージ条件を満たし得る。第２のメモリ領域におけるサービステナントに対応するストレージ領域の残存オブジェクトは、コンカレントマーキング段階中に決定され得る。
【００６１】
[73]  第１のターゲット領域が、第１の再利用段階で解放された後に、ターゲットテナントに対応するテナントメモリ領域がマーキングされる。この段階では、第１のメモリ領域及び第２のメモリ領域におけるターゲットテナントの利用可能オブジェクトが決定され得る。Java（商標）バーチャルマシンの場合、この段階で、マーキング動作を行うスレッドが、アプリケーションスレッドと同時に進行し得る。従って、この動作は、コンカレントマーキング動作と呼ばれ得る。区別を簡単にするために、コンカレントマーキング段階が行われるターゲットテナントは、ここでは、第２のターゲットテナントと呼ばれ得る。第２のターゲットテナントは、予め設定されたコンカレントマーキング条件を満たす第２のメモリ領域におけるストレージ空間を占有するサービステナントである。ここでのコンカレントマーキング条件は、例えば、サービステナントに対応する第２のストレージ空間の占有量が予め設定された閾値に達すること、又はサービステナントに対応する第２のストレージ空間の占有率が予め設定された閾値に達することを包含し得る。
【００６２】
[74]  例えば、テナントＡの場合、４個の第１のメモリ領域及び６個の第２のメモリ領域を包含する１０個のサービスストレージエリアが、事前にテナントＡに割り当てられる。この場合、６個のメモリ領域の内の４個が完全に占有されている場合に、テナントＡが第２のターゲットテナントとして決定され、テナントＡに対応するサービステナント領域に対するマーキング動作がトリガされ得るように予め設定され得る。
【００６３】
[75]  図９は、本出願の実施形態によるコンカレントマーキングの実施の概略フローチャートである。コンカレントマーキングは、Ｓ３０１〜Ｓ３０４を包含し得る。
【００６４】
[76]  ステップＳ３０１では、第２のターゲットテナントに対応するサービステナント領域における第２の利用可能オブジェクトが、第２のターゲットテナントに対応するルートオブジェクトに従って決定され得る。このプロセスは、第２のターゲットテナントに対応するルートオブジェクトにアクセス可能なサービステナント領域におけるオブジェクトが、利用可能オブジェクトとして決定される初期マークプロセスである。区別を簡単にするために、これらの利用可能オブジェクトは、第２の利用可能オブジェクトと呼ばれる。ルートオブジェクトに従って利用可能オブジェクトを決定するプロセスに関して、ステップＳ２０２の関連の説明を参照することができ、詳細は、ここでは繰り返さない。
【００６５】
[77]  このステップが行われると、第２のターゲットテナントのスレッド及びルートオブジェクトのスレッドは、一時停止され得るが、第２のターゲットテナントを除くサービステナントのスレッドは、影響を受けないことが可能である。
【００６６】
[78]  ステップＳ３０２では、第２の利用可能オブジェクトを直接参照する第３の利用可能オブジェクトが決定され得る。このプロセスは、ルート領域スキャンプロセスである。このプロセスでは、同様に、第２のターゲットテナントのスレッド及びルートオブジェクトのスレッドのみが、一時停止され得るが、第２のターゲットテナントを除くサービステナントのスレッドは、影響を受けないことが可能である。
【００６７】
[79]  ステップＳ３０３では、第２の利用可能オブジェクトを間接的に参照する第３の利用可能オブジェクトが決定され得る。このプロセスは、コンカレントマーキングプロセスである。このステップを行うスレッドは、第２のターゲットテナントのスレッドと同時に実行することができ、各領域の残存オブジェクト情報が収集される。
【００６８】
[80]  第２のターゲットテナントのスレッドもこのプロセスで実行されるので、コンカレントマーキングプロセスにおける第２の利用可能オブジェクトの参照関係の変化が記録され、それによって、参照関係が変化したオブジェクトを不正確にマーキングすることを回避し得る。幾つかの実施形態では、コンカレントマーキングプロセスにおける第２の利用可能オブジェクトの参照関係の変化は、ライトバリア（write barrier）を使用することによって記録され得る。
【００６９】
[81]  ステップＳ３０４では、第３の利用可能オブジェクトを決定するプロセスにおける第２のターゲットテナントのオブジェクト参照関係の変化、並びに第２の利用可能オブジェクト及び第３の利用可能オブジェクトに従って、第４の利用可能オブジェクトが決定される。このプロセスは、リマークプロセスである。このプロセスでは、同様に、第２のターゲットテナントのスレッド及びルートオブジェクトのスレッドのみが、一時停止され得るが、第２のターゲットテナントを除くサービステナントのスレッドは、影響を受けないことが可能である。
【００７０】
[82]  第４の利用可能オブジェクトの決定後に、サービステナント領域の様々なメモリ領域に保存された第４の利用可能オブジェクトの状態が、取得され得る。次いで、サービステナント領域が再利用されるときに、サービステナント領域の第２の再利用段階が、サービステナント領域の様々なメモリ領域に保存された第４の利用可能オブジェクトの状態に従って行われ得る。
【００７１】
[83]  第３の段階は、混合コレクション（Mixed GC）段階と呼ばれる第２の再利用段階とすることができる。この段階では、第２のメモリ領域のみを再利用することが可能であり、第１のメモリ領域及び第２のメモリ領域を同時に再利用することも可能である。これは、第１のメモリ領域及び第２のメモリ領域のストレージ条件に従って決定され得る。
【００７２】
[84]  図１０は、本出願の実施形態によるリソース再利用方法の第２の再利用段階の概略フローチャートである。第２の再利用段階は、ステップＳ４０１〜Ｓ４０５を包含し得る。
【００７３】
[85]  ステップＳ４０１では、第２のターゲットテナントに対応する各メモリ領域におけるターゲットメモリ領域が、第２のターゲット領域として決定され得る。ターゲットメモリ領域は、サービステナント領域における、保存された第４の利用可能オブジェクトが予め設定されたストレージ条件を満たすメモリ領域でもよい。予め設定されたストレージ条件は、例えば、全ストレージ量に対する保存された第４の利用可能オブジェクトによって占有されるストレージ量の比率が、設定された閾値未満であることを包含し得る。この場合、全ストレージ量に対する第４の利用可能オブジェクトによって占有されるストレージ量の比率が比較的高いメモリ領域を再利用する必要はない。例えば、占有率が共に１００％である２つのストレージ空間において、一方のストレージ空間における利用可能オブジェクトが、全ストレージ空間の１０％を占有し、他方のストレージ空間における利用可能オブジェクトが、全ストレージ空間の９０％を占有する場合、利用可能オブジェクトが空間の全ストレージ量の１０％を占有するメモリ領域が、再利用され得る。このようにして、より多くのメモリ空間が解放され得る。
【００７４】
[86]  第２の再利用段階における再利用中に、第２のメモリにおいて予め設定されたストレージ条件を満たすメモリ領域が、まず再利用され得る。予め設定されたストレージ条件を満たすメモリ領域の数が比較的小さい（例えば、設定された閾値未満）場合には、第２のターゲットオブジェクトに対応する第１のメモリ領域が、次に再利用され得る。すなわち、第２のターゲットオブジェクトに対応する第１のメモリ領域も、第２のターゲット領域と見なされ得る。
【００７５】
[87]  ステップＳ４０２では、第２のターゲット領域における第５の利用可能オブジェクトが決定され得る。第２の再利用段階が、異なるテナントに対して個別に実行されるので、第２のターゲットテナントの利用可能オブジェクト、すなわち、第５の利用可能オブジェクトのみを決定することも可能である。第５の利用可能オブジェクトの決定中に、利用可能オブジェクトは、ルートオブジェクト中の第２のターゲットテナントに対応するルートオブジェクトに従って決定され得る。
【００７６】
[88]  第２のターゲット領域が、第１のメモリ領域（例えば、Young領域）を包含し得るので、第１のメモリ領域において利用可能オブジェクトをマーキングするプロセスに関して、ステップＳ２０２の関連の説明を参照することができ、詳細は、ここでは繰り返さない。第２のターゲット領域は、第２のメモリ領域を包含することができ、各第２のメモリ領域のリメンバーセット（Rset）は、現在のパーティション外のオブジェクトによる現在のパーティションへの参照を記録することができる。従って、第２のメモリ領域における利用可能オブジェクトも、リメンバーセットに従って決定され得る。従って、GC ROOTは、リメンバーセットをさらに包含し得る。
【００７７】
[89]  図１１は、本出願の実施形態による第２の再利用段階で利用可能オブジェクトが決定される時のオブジェクト間の関係の概略図を示す。第２のターゲットテナントのYoung領域における全ての利用可能オブジェクト、及び第２のターゲットテナントのOld領域における一部又は全ての利用可能オブジェクトが、第２のターゲットテナントに対応するルートオブジェクトに従って決定され得る。加えて、第２のターゲットテナントのOld領域における利用可能オブジェクトも、リメンバーセット（Rset）に従って決定され得る。このようにして、第２のターゲットテナントのOld領域及びYoung領域における全ての利用可能オブジェクトが、決定され得る。
【００７８】
[90]  図１０を再び参照して、ステップＳ４０３において、第５の利用可能オブジェクトが、第２のターゲット領域から除去され得る。幾つかの実施形態では、第５の利用可能オブジェクトは、新しい第２のメモリ領域に転送することができ、ヒープメモリの別の領域に転送されることも可能であるが、これは、本出願において限定されない。
【００７９】
[91]  ステップＳ４０４では、第５の利用可能オブジェクトに関するルートテナント領域における参照アドレスが更新され得る。メモリにおける第５の利用可能オブジェクトの位置が変化しているので、様々な後続のサービスの通常動作を保証するために、参照アドレスも更新され得る。第５の利用可能オブジェクトは、以前に、別のオブジェクトによって参照アドレスを用いて参照されている。
【００８０】
[92]  ステップＳ４０５では、第２のターゲット領域が解放され得る。第２のターゲット領域の利用可能オブジェクトが別のメモリ領域に転送されているので、第２のターゲット領域の全てのオブジェクトを一掃することができ、第２のターゲット領域を解放することができる。
【００８１】
[93]  これまでに、第２のターゲットテナントに対応するメモリ領域に関する１つのリソース再利用プロセスが完了している。このプロセスでは、リソース再利用は、第２のターゲットテナントに対応するメモリ領域に対してのみ行われる。第２のターゲットテナントのスレッドを一時停止するだけでよい一方で、他のサービステナントのスレッドは、一時停止される必要がない。従って、他のサービステナントのサービスリクエスト処理が影響を受けないことが可能である。
【００８２】
[94]  本出願は、第２のターゲットテナントに対応するメモリ領域においてのみリソースを再利用することができ、この段階は、第２のターゲットテナントにとって比較的短い時間を要する。この場合、第２のターゲットテナントのサービスが影響を受ける時間も比較的短い。従って、第２のターゲットテナントに対応するユーザの経験がより良くなり得る。さらに、このプロセスは、他のサービステナントのサービスリクエスト処理に影響を与えない。従って、他のサービステナントに対応するユーザも、より良い経験を持ち得る。
【００８３】
[95]  第４の段階は、グローバル再利用段階とすることができる。ヒープメモリの場合、オブジェクトの頻繁な作成又は削除は、メモリ空間の不連続性をもたらす場合があり、メモリ空間において多くのフラグメントを生じさせる。これは、オブジェクトの書き込み／読み取り速度を低下させる場合があり、その結果、プログラムの実行効率に影響を与える。従って、プログラムの実行効率を向上させるために、ある状況下では、リソース再利用がヒープメモリ全体に対して行われ得る。例えば、ルートテナント領域のメモリフラグメンテーションの度合いが、設定されたフラグメンテーション閾値を超えることが検出されると、リソース再利用が、ヒープメモリ全体に対して行われ得る。ヒープメモリ全体に対して行われるこの再利用は、グローバル再利用段階として知られる第４の段階の一部でもよい。
【００８４】
[96]  この段階のリソース再利用がヒープメモリ全体に対して行われるときに、全てのテナントのスレッドが一時停止され得る。次いで、ヒープメモリ全体の利用可能オブジェクトが決定され、ある特定のストレージ空間に転送された後に、ヒープメモリ全体のストレージ空間が解放され得る。本出願では、リソース再利用がヒープメモリの領域を解放するために行われるときに、メモリ空間のフラグメンテーションの問題を取り除くために、デフラグメンテーションが行われ得ることに留意されたい。グローバル再利用のプロセスにおいて、利用可能オブジェクトをヒープメモリのある特定のメモリ領域に転送することができ、その後、ヒープメモリの他のメモリ領域を解放することができる。
【００８５】
[97]  全てのテナントのスレッドが、グローバル再利用段階において一時停止され得るが、グローバル再利用段階のワークロードは、第１の再利用段階及び第２の再利用段階の以前のリソース再利用により、重くなりすぎないことが可能である。従って、グローバル再利用段階は、長時間かからないことが可能である。また、グローバル再利用段階は、ルートテナント領域のメモリフラグメンテーションの度合いが、設定されたフラグメンテーション閾値を超える場合にのみ行われ、頻繁に行われなくてもよい。従って、アプリケーションプログラムが長期間、外部サービスを提供できないという問題を生じさせないことが可能である。
【００８６】
[98]  本出願によるリソース再利用方法の上述の様々な段階における様々なスレッドの実行の理解を容易にするために、様々な段階におけるリソース再利用スレッド及びアプリケーションスレッドの実行を、以下に統一されたやり方で詳細に説明する。
【００８７】
[99]  図１２は、本出願の実施形態による、様々な段階におけるリソース再利用方法のスレッド実行状態の概略図を示す。図１２では、第１の種類のライン（すなわち、一点鎖線ライン）を使用して、ターゲットテナントに対応するスレッドを表し、第２の種類のライン（すなわち、点線）を使用して、ターゲットテナントを除くサービステナントのスレッドを表し、第３の種類のライン（すなわち、実線）を使用して、リソース再利用スレッドを表す。例えば、ある特定の段階中のスレッドは、そのスレッドがその段階において実行されていることを示す。グローバル再利用段階を除く全ての段階において、他のサービステナントのスレッド（すなわち、点線）が、ターゲットテナントのスレッドを再利用する実行状態に存在することが図１２から分かる。
【００８８】
[100]  本出願の実施形態によるリソース再利用方法において、ターゲットテナントに対応するメモリ領域のみをリソース再利用中のターゲットテナントと見なすことによって、再利用を行うことができ、ターゲットテナントを除くテナントのメモリ領域は再利用されない場合がある。従って、ターゲットテナントを除くテナントのスレッドは、外部サービスを提供するために通常通りに実行され得る。また、リソース再利用がターゲットテナントに対してのみ行われるので、ターゲットテナントのスレッドの一時停止時間は、比較的短くなる可能性があり、サービスに対する応答も、比較的速くなり得る。サービスがユーザに対するサービスである場合には、ユーザは、より良い経験を持ち得る。
【００８９】
[101]  本出願の実施形態は、リソース再利用装置をさらに提供する。図１３は、本出願の実施形態による、リソース再利用装置５００の例示的構造概略図を示す。リソース再利用装置５００は、第１の決定ユニット５０１及び再利用ユニット５０２を包含し得る。
【００９０】
[102]  第１の決定ユニット５０１は、ヒープメモリにおけるターゲットテナントに対応するメモリ領域をターゲット領域として決定するように構成することができ、ターゲットテナントは、ヒープメモリに対応するテナント中の１つ又は複数のテナントである。
【００９１】
[103]  再利用ユニット５０２は、ターゲット領域に対してリソース再利用を行うことにより、ターゲット領域を解放するように構成され得る。
【００９２】
[104]  幾つかの実施形態では、第１の決定ユニット５０１は、ヒープメモリにおけるターゲットテナントに対応するメモリ領域をターゲット領域として決定し得る。ターゲットテナントは、ヒープメモリに対応するテナント中の１つ又は複数のテナントを包含し得る。次いで、再利用ユニット５０２は、ターゲット領域に対してリソース再利用を行うことにより、ターゲット領域を解放し得る。従って、リソース再利用プロセスにおいて、ターゲットテナントの１つのスレッドのみが一時停止される一方で、他のテナントのスレッドは、影響を受けない。従って、他のテナントは、依然として外部サービスを提供することができる。
【００９３】
[105]  本出願の幾つかの実施形態では、ターゲットテナントと他のテナントとの間の相互参照が、他のテナントのサービスの通常動作に影響を与えることを回避するために、ターゲットテナントは、サービステナントを包含し得る。サービステナントは、サービスリクエストを処理するためのテナントである。ターゲットテナントと他のサービステナントとの間に参照関係は存在しない。
【００９４】
[106]  本出願の幾つかの実施形態では、決定ユニット５０３及び第１のストレージユニット５０４が、ターゲットテナントと他のサービステナントとの間の参照関係を除去するように構成され得る。
【００９５】
[107]  決定ユニット５０３は、サービステナントによって共有される静的変数がヒープメモリに保存されたことに応答して、静的変数が、サービス論理の観点からサービステナント間で分離され得るか否かを決定するように構成され得る。
【００９６】
[108]  第１のストレージユニット５０４は、静的変数がサービス論理の観点からサービステナント間で分離され得るという決定に応答して、サービステナントの各サービステナント領域に静的変数を保存するように構成され得る。
【００９７】
[109]  本出願の幾つかの実施形態においては、第２のストレージユニット５０５は、静的変数がサービス論理の観点からサービステナント間で分離することができないという決定に応答して、ヒープメモリのルートテナント領域に静的変数を保存するように構成され得る。ルートテナント領域は、ルートテナントのオブジェクトを保存することができ、ルートテナントは、実行中に必要とされるリソースをサービステナントに提供することができる。
【００９８】
[110]  幾つかの実施形態では、ターゲットテナントは、第１のターゲットテナントを包含する。第１のターゲットテナントは、以下のようなサービステナントの少なくとも１つを包含する。
【００９９】
[111]  例えば、第１のターゲットテナントは、空間占有ランキングに従って決定されるサービステナントを包含し得る。空間占有ランキングは、第１のメモリ領域におけるサービステナントによって占有されるストレージ空間の大きい順にサービステナントをソートすることによって取得され得る。第１のメモリ領域は、ヒープメモリにおける、young世代オブジェクトを保存するためのストレージ領域でもよい。
【０１００】
[112]  例えば、第１のターゲットテナントは、第１のメモリ領域においてサービステナントによって現在占有されるストレージ空間のサイズに従って決定されるサービステナントを包含し得る。
【０１０１】
[113]  例えば、第１のターゲットテナントは、予め設定されたテナント再利用順序に従って決定されるサービステナントを包含し得る。予め設定されたテナント再利用順序は、第１のメモリ領域におけるサービステナントに対応する領域に対してリソース再利用動作を行うための予め設定されたシーケンスでもよい。
【０１０２】
[114]  幾つかの実施形態では、第１の決定ユニット５０１は、第１のターゲット領域として、第１のメモリ領域における第１のターゲットテナントに対応するメモリ領域を決定するように構成され得る。第１のターゲット領域は、new世代オブジェクト領域及び第１のsurvivor領域を包含し得る。
【０１０３】
[115]  再利用ユニット５０２は、第１のターゲット領域における第１の利用可能オブジェクトを決定するように構成され得る。再利用ユニット５０２は、第１のターゲット領域のnew世代オブジェクト領域及び第１のsurvivor領域から決定された第１の利用可能オブジェクトを除去するようにさらに構成され得る。再利用ユニット５０２は、第１の利用可能オブジェクトに関するルートテナント領域における参照アドレスを更新するようにも構成され得る。再利用ユニット５０２は、第１のターゲット領域におけるnew世代オブジェクト領域及び第１のsurvivor領域を解放するようにさらに構成され得る。
【０１０４】
[116]  幾つかの実施形態では、再利用ユニット５０２は、第１のターゲットテナントに対応するルートオブジェクトを決定し、第１のターゲット領域におけるルートオブジェクトによって参照されるオブジェクトを第１の利用可能オブジェクトとして決定するように構成され得る。
【０１０５】
[117]  幾つかの実施形態では、ヒープメモリは、保存されたオブジェクトの残存期間に従って分割され得る。ヒープメモリは、old世代オブジェクトを保存するための第２のメモリ領域をさらに包含する。
【０１０６】
[118]  図１３の装置５００は、マーキングユニット５０６をさらに包含し得る。マーキングユニット５０６は、第１のターゲット領域におけるnew世代オブジェクト領域及び第１のsurvivor領域が解放された後に、第２のターゲットテナントに対応するテナントメモリ領域にマーキングするように構成され得る。第２のターゲットテナントは、予め設定されたコンカレントマーキング条件を満たす第２のメモリ領域における占有されたストレージ空間を有するサービステナントでもよい。
【０１０７】
[119]  幾つかの実施形態では、マーキングユニット５０６は、第１のマーキングユニット、第２のマーキングユニット、及び第３のマーキングユニットを包含し得る。
【０１０８】
[120]  第１のマーキングユニットは、第２のターゲットテナントに対応するルートオブジェクトに従って、第２のターゲットテナントに対応するサービステナント領域における第２の利用可能オブジェクトを決定するように構成され得る。
【０１０９】
[121]  第２のマーキングユニットは、第２の利用可能オブジェクトを直接参照し、第２の利用可能オブジェクトを間接的に参照する第３の利用可能オブジェクトを決定するように構成され得る。
【０１１０】
[122]  第３のマーキングユニットは、第２の利用可能オブジェクト、第３の利用可能オブジェクト、及び第３の利用可能オブジェクトを決定するプロセスにおける第２のターゲットテナントのオブジェクト参照関係の変化に従って、第４の利用可能オブジェクトを決定するように構成され得る。
【０１１１】
[123]  幾つかの実施形態では、第１の決定ユニット５０１は、第２のターゲット領域として、第２のターゲットテナントに対応する各メモリ領域におけるターゲットメモリ領域を決定するように構成され得る。ターゲットメモリ領域は、サービステナント領域における、保存された第４の利用可能オブジェクトが予め設定されたストレージ条件を満たすメモリ領域でもよい。
【０１１２】
[124]  再利用ユニット５０２は、第５の利用可能オブジェクトとして、第２のターゲット領域において利用可能オブジェクトを決定するように構成され得る。再利用ユニット５０２は、第２のターゲット領域から第５の利用可能オブジェクトを除去するようにさらに構成され得る。再利用ユニット５０２は、第５の利用可能オブジェクトに関するルートテナント領域における参照アドレスを更新し、第２のターゲット領域を解放するようにも構成され得る。
【０１１３】
[125]  幾つかの実施形態では、装置５００は、グローバル再利用ユニット５０７をさらに包含し得る。グローバル再利用ユニット５０７は、ルートテナント領域のメモリフラグメンテーションの度合いが、設定されたフラグメンテーション閾値を超える場合に、リソース再利用をヒープメモリ全体に対して行うように構成され得る。
【０１１４】
[126]  本出願の実施形態によるリソース再利用装置において、ターゲットテナントを除くテナントのメモリ領域は、再利用されない場合がある。従って、ターゲットテナントを除くテナントのスレッドは、外部サービスを提供し続けることができる。
【０１１５】
[127]  また、本出願は、ターゲットテナントに対応するメモリ領域においてのみリソースを再利用することができ、この段階は、ターゲットテナントにとって比較的短い時間を要する。従って、ターゲットテナントのサービスが影響を受ける時間も比較的短い。従って、ターゲットテナントに対応するユーザの経験が、より良くなり得る。さらに、このプロセスは、他のサービステナントのサービスリクエスト処理に影響を与えない。従って、他のサービステナントに対応するユーザも、より良い経験を持ち得る。
【０１１６】
[128]  １９９０年代には、技術の向上が、ハードウェアの向上（例えば、ダイオード、トランジスタ、及びスイッチなどの回路構造の向上）、又はソフトウェアの向上（方法プロシージャの向上）として明白に区別することができたことに留意されたい。しかし、技術の進歩と共に、現在の方法プロシージャの向上の多くが、ハードウェア回路構造の直接的向上と見なされ得る。ほとんど全ての設計者は、対応するハードウェア回路構造を得るために、向上した方法プロシージャをハードウェア回路にプログラミングする。従って、方法プロシージャの向上が、ハードウェアエンティティモジュールを使用することによって実施することができないと仮定することは不適切である。例えば、プログラマブル論理回路（ＰＬＤ）（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ））は、その論理関数が、ユーザによってプログラミングされたデバイスによって決定されるような集積回路である。設計者は、チップメーカーに専用の集積回路チップの設計及び製造を依頼する必要なしに、自身で、デジタルシステムを１個のＰＬＤに「組み入れる」ようにプログラミングする。また、現在、プログラミングは、手作業で集積回路チップを製造する代わりに、大抵は、論理コンパイラソフトウェアを使用することによって実施される。論理コンパイラソフトウェアは、プログラムを開発するため、及びプログラムを書くために使用されるソフトウェアコンパイラに類似し、コンパイル前のオリジナルコードも、ハードウェア記述言語（ＨＤＬ）と呼ばれる特定のプログラミング言語を使用することによって書かれる必要がある。たった１つではなく、高度ブール式言語（ＡＢＥＬ：Advanced Boolean Expression Language）、Alteraハードウェア記述言語（ＡＨＤＬ）、Confluence、コーネル大学プログラミング言語（ＣＵＰＬ）、HDCal、Javaハードウェア記述言語（ＪＨＤＬ）、Lava、Lola、MyHDL、PALASM、及びRubyハードウェア記述言語（ＲＨＤＬ）（これらの中で、超高速集積回路ハードウェア記述言語（ＶＨＤＬ：Very-High-Speed Integrated Circuit Hardware Description Language）及びVerilogが、現在最も一般的に使用されている）などの多くのタイプのＨＤＬが存在する。当業者であれば、論理方法プロシージャを実施するためのハードウェア回路が、上記の幾つかのハードウェア記述言語を使用して方法プロシージャを少し論理的にプログラミングし、それを集積回路にプログラミングすることによって、簡単に得られ得ることも分かるはずである。
【０１１７】
[129]  コントローラは、任意の適宜のやり方で実施され得る。例えば、コントローラは、例えば、マイクロプロセッサ又はプロセッサと、（マイクロ）プロセッサ、論理ゲート、スイッチ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理コントローラ、及び埋込式マイクロコントローラによって実行可能なコンピュータ可読プログラムコード（例えば、ソフトウェア又はファームウェア）を保存するコンピュータ可読媒体との形態でもよい。コントローラの例には、限定されないが、以下のマイクロコントローラ：ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、及びSilicone Labs C8051F320が包含される。メモリコントローラも、メモリの制御論理の一部として実施され得る。当業者であれば、コントローラが、純コンピュータ可読プログラムコードを使用することによって実施され得ること、加えて、論理ゲート、スイッチ、特定用途向け集積回路、プログラマブル論理コントローラ、及び埋込式マイクロコントローラの形態で、コントローラが同機能を実施することを可能にするように、方法ステップが論理的にプログラミングされ得ることも分かる。従って、このタイプのコントローラは、ハードウェアコンポーネントと見なすことができ、その内部に包含される、様々な機能を実施するための装置も、ハードウェアコンポーネント内の構造と見なすことができる。或いは、様々な機能を実施するために使用される装置は、方法を実施するためのソフトウェアモジュール及びハードウェアコンポーネント内の構造の両方と見なすことさえできる。
【０１１８】
[130]  上記の実施形態に例示したシステム、装置、モジュール、又はユニットは、コンピュータチップ若しくはエンティティ、又はある特定の機能を有するプロダクトを使用することによって実施され得る。一般的な実施デバイスは、コンピュータである。コンピュータは、例えば、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラフォン、スマートフォン、個人情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メールデバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、又はこれらのデバイスの任意の組み合わせでもよい。
【０１１９】
[131]  説明を簡単にするために、装置が説明されるときに、それぞれの説明のために、機能の観点から装置が様々なユニットに分割される。明らかに、本出願が実施される際に、上記ユニットの機能は、同じ又は複数のソフトウェア及び／又はハードウェアにおいて実施され得る。
【０１２０】
[132]  当業者であれば、本出願の実施形態が、方法、システム、又はコンピュータプログラムプロダクトとして提供され得ることを理解するはずである。従って、本発明は、完全なハードウェア実施形態、完全なソフトウェア実施形態、又はソフトウェア及びハードウェアを組み合わせた実施形態として実施され得る。また、本発明は、コンピュータ使用可能プログラムコードを包含する１つ又は複数のコンピュータ使用可能ストレージ媒体（限定されないが、磁気ディスクメモリ、ＣＤ−ＲＯＭ、光メモリなどを包含する）に実装されたコンピュータプログラムプロダクトの形態でもよい。
【０１２１】
[133]  本出願は、本発明の実施形態による方法、デバイス（システム）、及びコンピュータプログラムプロダクトのフローチャート及び／又はブロック図を参照して記載される。コンピュータプログラム命令を使用して、フローチャート及び／又はブロック図の各プロセス及び／又はブロック、並びに、フローチャート及び／又はブロック図のプロセス及び／又はブロックの組み合わせが実施され得ることが理解されるはずである。コンピュータプログラム命令は、マシンを生成するために、コンピュータ、埋込式プロセッサ、又は別のプログラマブルデータ処理デバイスのプロセッサに提供されてもよく、それによって、コンピュータ又は別のプログラマブルデータ処理デバイスのプロセッサが、フローチャートにおける１つ又は複数のプロセス、及び／又はブロック図における１つ又は複数のブロックにおいて指定された機能を実施するように構成された装置を生成するための命令を実行する。
【０１２２】
[134]  コンピュータプログラム命令は、コンピュータ又は別のプログラマブルデータ処理デバイスが、特定の様式で機能するように誘導し得るコンピュータ可読ストレージに保存されることも可能であり、それによって、コンピュータ可読ストレージに保存された命令は、命令装置を包含する製品を生成し、及び命令装置は、フローチャートにおける１つ又は複数のプロセス、及び／又はブロック図における１つ又は複数のブロックによって指定された機能を実施する。
【０１２３】
[135]  コンピュータプログラム命令は、コンピュータ又は別のプログラマブルデータ処理デバイスにロードされることも可能であり、それによって、一連の動作ステップが、コンピュータ実施処理を生じさせるために、コンピュータ又は別のプログラマブルデバイスに対して実行され、並びに、その結果、コンピュータ又は別のプログラマブルデバイスで実行された命令が、フローチャートにおける１つ又は複数のプロセス、及び／又はブロック図における１つ又は複数のブロックで指定された機能を実施するためのステップを提供する。
【０１２４】
[136]  一般的な構成では、コンピューティングデバイスは、１つ又は複数のプロセッサ（ＣＰＵ）、入出力インタフェース、ネットワークインタフェース、及びメモリを包含する。
【０１２５】
[137]  メモリは、揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、及び／又はコンピュータ可読媒体における不揮発性メモリなど（例えば、リードオンリーメモリ（ＲＯＭ）又はフラッシュＲＡＭ）を包含し得る。メモリは、コンピュータ可読媒体の一例である。
【０１２６】
[138]  コンピュータ可読媒体は、不揮発性及び揮発性媒体、並びに、移動可能及び非移動可能媒体を包含するとともに、任意の方法又は技術を用いて情報記憶を実施し得る。情報は、コンピュータ可読命令、データ構造、及びプログラム又は他のデータのモジュールでもよい。コンピュータのストレージ媒体は、例えば、限定されないが、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他のタイプのＲＡＭ、ＲＯＭ、電気的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ若しくは他のメモリ技術、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）若しくは他の光学ストレージ、カセットテープ、磁気テープ／磁気ディスクストレージ若しくは他の磁気ストレージデバイス、又はその他の非伝送媒体を包含し、及びコンピューティングデバイスがアクセスできる情報を保存するために使用され得る。本明細書における定義によれば、コンピュータ可読媒体は、変調データ信号及び搬送波などの一時的媒体を包含しない。
【０１２７】
[139]  「包含する（include）」、「含む（comprise）」という用語、又はそれらの他のバリエーションは、非排他的包含を対象にすることが意図され、従って、一連の要素を包含するプロセス、方法、商品、又はデバイスが、それらの要素を包含するだけでなく、明白にリストされていない他の要素も含み、又はプロセス、方法、商品、若しくはデバイスの固有の要素をさらに包含することにさらに留意されたい。追加の制限がなければ、「１つの…を包含する（including a/an...）」によって定義される要素は、その要素を包含するプロセス、方法、商品、又はデバイスが、他の同一の要素をさらに有することを除外しない。
【０１２８】
[140]  本出願は、コンピュータによって実行されるコンピュータ実行可能命令（例えば、プログラムモジュール）の一般的な文脈で説明され得る。一般に、プログラムモジュールは、具体的なタスクを実行する、又は具体的な抽象データ型を実施するためのルーチン、プログラム、オブジェクト、アセンブリ、データ構造などを包含する。本出願は、分散コンピューティング環境で実施されることも可能であり、及び分散コンピュータ環境において、通信ネットワークを介して接続されたリモート処理デバイスを使用することによって、タスクが実行される。分散コンピュータ環境において、プログラムモジュールは、ストレージデバイスを包含するローカル及びリモートコンピュータストレージ媒体に位置してもよい。
【０１２９】
[141]  本明細書における実施形態は、漸進的に説明され、これらの実施形態の同一又は類似の部分は、互いを参照して得ることができ、及び各実施形態は、他の実施形態とは異なる部分を強調する。特に、システム実施形態は、基本的に、方法実施形態と類似し、そのため、それは、簡単に説明される。関連する部分に関しては、方法実施形態の部分の説明を参照されたい。
【０１３０】
[142]  上記の記載は、本出願を限定することを意図しない、本出願の実施形態にすぎない。当業者にとっては、本出願は、様々な修正及び変更を有し得る。本出願の精神及び原理の範囲内で行われるあらゆる修正、同等の置換、改善などは全て、本出願の請求項の範囲に包含されるものとする。
【図１】
2020508507.tif 000003
【図２】
2020508507.tif 000004
【図３】
2020508507.tif 000005
【図４】
2020508507.tif 000006
【図５】
2020508507.tif 000007
【図６】
2020508507.tif 000008
【図７】
2020508507.tif 000009
【図８】
2020508507.tif 000010
【図９】
2020508507.tif 000011
【図１０】
2020508507.tif 000012
【図１１】
2020508507.tif 000013
【図１２】
2020508507.tif 000014
【図１３】
2020508507.tif 000015
【国際調査報告】
2020508507.tif 000016