(58)【調査した分野】(Int.Cl.,DB名)
メモリとプロセッサとを含む電子機器であって、前記メモリが、前記プロセッサによって実行されると、前記プロセッサに、請求項1から12のいずれか一項に記載の方法を行わせるコンピュータプログラムを格納する、電子機器。
プロセッサによって実行されると、前記プロセッサに、請求項1から12のいずれか一項に記載の方法を行わせるコンピュータプログラムを格納しているコンピュータ可読記憶媒体。
メモリからコンピュータプログラムを呼び出し、前記コンピュータプログラムを実行して、チップ上にインストールされている装置に請求項1から12のいずれか一項に記載の方法を行わせるためのプロセッサを含むチップ。
【発明を実施するための形態】
【0011】
本開示の目的、技術的解決策および利点をより明確にするために、本開示を、図面および実施形態と併せて以下でさらに詳述する。本明細書に記載される具体的な実施形態は、本開示を限定するためではなく本開示を説明するために使用されているにすぎないことが理解されよう。
【0012】
本開示の少なくともいくつかの実施形態は以下の解決策を提供する。
【0013】
解決策1.メモリを処理するための方法であって、電子機器において実行され、
処理されるべきアプリケーションによって占有された複数の回収可能なメモリページを決定することと、
処理されるべきアプリケーションに対応する回収割合を決定することと、
複数の回収可能なメモリページおよび回収割合に従って回収数を決定することと、
複数の回収可能なメモリページの中から回収数の回収可能なメモリページを選択し、回収数のメモリページを回収することと
を含む、方法。
【0014】
解決策2.処理されるべきアプリケーションによって占有された複数の回収可能なメモリページを決定することが、
処理されるべきアプリケーションによって占有されたすべてのメモリページを、処理されるべきアプリケーションによって占有されたメモリを問い合わせすることによって決定することと、
複数の回収可能なメモリページとして少なくとも1つの特定のメモリページを除くすべてのメモリページを決定することであって、少なくとも1つ特定のメモリページの各々に格納されたデータが処理されるべきアプリケーションによって使用されているかまたは処理されるべきアプリケーションの正常な動作を保持するために必要なデータであることと
を含む、解決策1に記載の方法。
【0015】
解決策3.複数の回収可能なメモリページとして少なくとも1つの特定のメモリページを除くすべてのメモリページを決定することが、
処理されるべきアプリケーションによって使用されているデータを格納しているかまたは処理されるべきアプリケーションの正常な動作を保持するために必要なデータを有する少なくとも1つ特定のメモリページを決定することと、
少なくとも1つ特定のメモリページの各々に占有マークを構成することであって、占有マークが、特定のメモリページが回収可能であり得ないことを指示する、構成することと、
複数の回収可能なメモリページとして、それに占有マークが構成されている少なくとも1つの特定のメモリページを除くすべてのメモリページを決定することと
を含む、解決策2に記載の方法。
【0016】
解決策4.処理されるべきアプリケーションによって占有されたメモリのすべてのメモリページを問い合わせすることが、
処理されるべきアプリケーションのメモリマップドファイルをトラバースすることと、
メモリマップドファイルにおいて、処理されるべきアプリケーションによって占有されたすべてのメモリページを問い合わせすることと
を含む、解決策3に記載の方法。
【0017】
解決策5.処理されるべきアプリケーションに対応する回収割合を決定することが、
処理されるべきアプリケーションのアプリケーションタイプを決定することであって、アプリケーションタイプが処理されるべきアプリケーションの再開所要時間と回収割合との間の対応関係を示し、各再開所要時間が、回収割合の処理されるべきアプリケーションの複数の回収可能なメモリページが回収された後で処理されるべきアプリケーションを再開するために要する所要時間を示すことと、
アプリケーションタイプに対応する回収モデルに従って処理されるべきアプリケーションに対応する回収割合を決定することと
を含む、解決策1に記載の方法。
【0018】
解決策6.アプリケーションタイプに対応する回収モデルに従って処理されるべきアプリケーションに対応する回収割合を決定することが、
アプリケーションタイプが、処理されるべきアプリケーションの再開所要時間と回収割合との間に対応関係がないことを示す場合、処理されるべきアプリケーションに対応する回収割合が100%であると決定すること
を含む、解決策5に記載の方法。
【0019】
解決策7.アプリケーションタイプに対応する回収モデルに従って処理されるべきアプリケーションに対応する回収割合を決定することが、
アプリケーションタイプが、処理されるべきアプリケーションの再開所要時間と回収割合との間に線形の対応関係があることを示す場合、線形の対応関係の傾きに従って処理されるべきアプリケーションに対応する回収割合を決定すること
を含む、解決策5に記載の方法。
【0020】
解決策6.アプリケーションタイプに対応する回収モデルに従って処理されるべきアプリケーションに対応する回収割合を決定することが、
アプリケーションタイプが、処理されるべきアプリケーションの再開所要時間と回収割合との間に非線形の対応関係があることを示す場合、処理されるべきアプリケーションに対応する回収割合を、回収されるメモリページの総数と処理されるべきアプリケーションの再開所要時間との間の費用対効果が最高になるように決定すること
を含む、解決策5に記載の方法。
【0021】
解決策9.処理されるべきアプリケーションに対応する回収割合を決定することが、
処理されるべきアプリケーションに対応する回収割合と再開所要時間との間の対応関係を決定することであって、再開所要時間が、回収割合の処理されるべきアプリケーションによって占有された回収可能なメモリページが回収された後で処理されるべきアプリケーションを再開するための所要時間であることと、
回収割合と再開所要時間との間の対応関係に従って回収可能なメモリページの回収割合を決定することと
を含む、解決策1に記載の方法。
【0022】
解決策10.回収可能なメモリページの中から回収割合のメモリページを選択し、回収数のメモリページを回収することが、
アイドル時間のサイズ降順に従って回収可能なメモリページの中から回収数の回収可能なメモリページを選択し、回収数のメモリページを回収することであって、アイドル時間が、その間に回収可能なメモリページが処理されるべきアプリケーションによって使用されない時間であること
を含む、解決策1に記載の方法。
【0023】
解決策11.回収可能なメモリページの中から回収割合のメモリページを選択し、回収数のメモリページを回収することが、
メモリページの通し番号に従って等間隔で回収可能なメモリページの中から回収数の回収可能なメモリページを選択し、回収数のメモリページを回収すること
を含む、解決策1に記載の方法。
【0024】
解決策12.処理されるべきアプリケーションによって占有された回収可能なメモリページを決定することの前に、本方法が、
少なくとも1つのフォアグラウンドアプリケーションが処理されるべきアプリケーションに依存しているかどうかを検出することと、
少なくとも1つのフォアグラウンドアプリケーションが処理されるべきアプリケーションに依存している場合、処理されるべきアプリケーションの優先度をフォアグラウンドアプリケーションと一致するように調整することと、
フォアグラウンドアプリケーションが処理されるべきアプリケーションに依存していない場合、処理されるべきアプリケーションによって占有された回収可能なメモリページを決定する動作を行うことと
をさらに含む、解決策1に記載の方法。
【0025】
解決策13.メモリとプロセッサとを含む電子機器であって、メモリが、プロセッサによって実行されると、プロセッサに、
処理されるべきアプリケーションによって占有された複数の回収可能なメモリページを決定することと、
処理されるべきアプリケーションに対応する回収割合を決定することと、
複数の回収可能なメモリページおよび回収割合に従って回収数を決定することと、
複数の回収可能なメモリページの中から回収数の回収可能なメモリページを選択し、回収数のメモリページを回収することと
を行わせるコンピュータプログラムを格納する、電子機器。
【0026】
解決策14.処理されるべきアプリケーションによって占有された複数の回収可能なメモリページを決定することが、
処理されるべきアプリケーションによって占有されたすべてのメモリページを、処理されるべきアプリケーションによって占有されたメモリを問い合わせすることによって決定することと、
複数の回収可能なメモリページとして少なくとも1つの特定のメモリページを除くすべてのメモリページを決定することであって、少なくとも1つ特定のメモリページの各々に格納されたデータが処理されるべきアプリケーションによって使用されているかまたは処理されるべきアプリケーションの正常な動作を保持するために必要なデータであることと
を含む、解決策13に記載の電子機器。
【0027】
解決策15.複数の回収可能なメモリページとして少なくとも1つの特定のメモリページを除くすべてのメモリページを決定することが、
処理されるべきアプリケーションによって使用されているデータを格納しているかまたは処理されるべきアプリケーションの正常な動作を保持するために必要なデータを有する少なくとも1つ特定のメモリページを決定することと、
少なくとも1つ特定のメモリページの各々に占有マークを構成することであって、占有マークが、特定のメモリページが回収可能であり得ないことを指示することと、
複数の回収可能なメモリページとして、それに占有マークが構成されている少なくとも1つの特定のメモリページを除くすべてのメモリページを決定することと
を含む、解決策14に記載の電子機器。
【0028】
解決策16.処理されるべきアプリケーションによって占有されたメモリのすべてのメモリページを問い合わせすることが、
処理されるべきアプリケーションのメモリマップドファイルをトラバースすることと、
メモリマップドファイルにおいて、処理されるべきアプリケーションによって占有されたすべてのメモリページを問い合わせすることと
を含む、解決策15に記載の電子機器。
【0029】
解決策17.処理されるべきアプリケーションに対応する回収割合を決定することが、
処理されるべきアプリケーションのアプリケーションタイプを決定することであって、アプリケーションタイプが処理されるべきアプリケーションの再開所要時間と回収割合との間の対応関係を示し、各再開所要時間が、処理されるべきアプリケーションの回収割合の複数の回収可能なメモリページが回収された後で処理されるべきアプリケーションを再開するために要する所要時間を示すことと、
アプリケーションタイプに対応する回収モデルに従って処理されるべきアプリケーションに対応する回収割合を決定することと
を含む、解決策13に記載の電子機器。
【0030】
解決策18.アプリケーションタイプに対応する回収モデルに従って処理されるべきアプリケーションに対応する回収割合を決定することが、
アプリケーションタイプが、処理されるべきアプリケーションの再開所要時間と回収割合との間に対応関係がないことを示す場合、処理されるべきアプリケーションに対応する回収割合が100%であると決定すること
を含む、解決策17に記載の電子機器。
【0031】
解決策19.アプリケーションタイプに対応する回収モデルに従って処理されるべきアプリケーションに対応する回収割合を決定することが、
アプリケーションタイプが、処理されるべきアプリケーションの再開所要時間と回収割合との間に線形の対応関係があることを示す場合、線形の対応関係の傾きに従って処理されるべきアプリケーションに対応する回収割合を決定すること
を含む、解決策17に記載の電子機器。
【0032】
解決策20.アプリケーションタイプに対応する回収モデルに従って処理されるべきアプリケーションに対応する回収割合を決定することが、
アプリケーションタイプが、処理されるべきアプリケーションの再開所要時間と回収割合との間に非線形の対応関係があることを示す場合、処理されるべきアプリケーションに対応する回収割合を、回収されるメモリページの総数と処理されるべきアプリケーションの再開所要時間との間の費用対効果が最高になるように決定すること
を含む、解決策17に記載の電子機器。
【0033】
解決策21.処理されるべきアプリケーションに対応する回収割合を決定することが、
処理されるべきアプリケーションに対応する回収割合と再開所要時間との間の対応関係を決定することであって、再開所要時間が、回収割合の処理されるべきアプリケーションによって占有された回収可能なメモリページが回収された後で処理されるべきアプリケーションを再開するための所要時間であることと、
回収割合と再開所要時間との間の対応関係に従って回収可能なメモリページの回収割合を決定することと
を含む、解決策13に記載の電子機器。
【0034】
解決策22.回収可能なメモリページの中から回収割合のメモリページを選択し、回収数のメモリページを回収することが、
アイドル時間のサイズ降順に従って回収可能なメモリページの中から回収数の回収可能なメモリページを選択し、回収数のメモリページを回収することであって、アイドル時間が、その間に回収可能なメモリページが処理されるべきアプリケーションによって使用されない時間であること
を含む、解決策13に記載の電子機器。
【0035】
解決策23.回収可能なメモリページの中から回収割合のメモリページを選択し、回収数のメモリページを回収することが、
メモリページの通し番号に従って等間隔で回収可能なメモリページの中から回収数の回収可能なメモリページを選択し、回収数のメモリページを回収すること
を含む、解決策13に記載の電子機器。
【0036】
解決策24.プロセッサが、
処理されるべきアプリケーションによって占有された複数の回収可能なメモリページを決定する前に、少なくとも1つのフォアグラウンドアプリケーションが処理されるべきアプリケーションに依存しているかどうかを検出し、
少なくとも1つのフォアグラウンドアプリケーションが処理されるべきアプリケーションに依存している場合、処理されるべきアプリケーションの優先度をフォアグラウンドアプリケーションと一致するように調整し、かつ
フォアグラウンドアプリケーションが処理されるべきアプリケーションに依存していない場合、処理されるべきアプリケーションによって占有された回収可能なメモリページを決定する動作を行う
ようにさらに構成される、解決策13に記載の電子機器。
【0037】
解決策25.プロセッサによって実行されると、プロセッサに、
処理されるべきアプリケーションによって占有された複数の回収可能なメモリページを決定することと、
処理されるべきアプリケーションに対応する回収割合を決定することと、
複数の回収可能なメモリページおよび回収割合に従って回収数を決定することと、
複数の回収可能なメモリページの中から回収数の回収可能なメモリページを選択し、回収数のメモリページを回収することと
を含む方法を行わせるコンピュータプログラムを格納しているコンピュータ可読記憶媒体。
【0038】
一実施形態では、
図1に示されるように、電子機器の内部構造図が提供される。電子機器は、システムバスを介して接続された、プロセッサと、メモリと、表示画面とを含む。プロセッサは、電子機器全体の動作を支援するための計算および制御能力を提供するように構成される。メモリは、データ、プログラム、および/または命令コードなどを格納するように構成され、メモリは少なくとも1つコンピュータプログラムを格納し、コンピュータプログラムは、プロセッサによって、本開示の実施形態で提供され、電子機器に適用される、メモリを処理するための方法を実装するために実行され得る。メモリは、磁気ディスク、光ディスク、読取り専用メモリ(ROM)などの不揮発性記憶媒体、またはランダム・アクセス・メモリ(RAM)などを含み得る。例えば、一実施形態では、メモリは、不揮発性記憶媒体および内部メモリを含む。不揮発性記憶媒体は、オペレーティングシステム、データベースおよびコンピュータプログラムを格納する。データベースは、様々な実施形態で提供されるメモリを処理するための方法を実装するための関連付けられたデータを格納し、例えば、各アプリケーションの名前や各アプリケーションに割り振られたメモリページなどの情報を格納し得る。コンピュータプログラムは、プロセッサによって、本開示の様々な実施形態で提供されるメモリを処理するための方法を実装するために実行され得る。内部メモリは、不揮発性記憶媒体内のオペレーティングシステム、データベースおよびコンピュータプログラムのためのキャッシュ動作環境を提供する。表示画面は、容量式スクリーンや電子画面などのタッチスクリーンであってもよく、タッチスクリーンは、フォアグラウンドアプリケーションのインターフェース表示情報を表示するように構成され、また、表示画面に作用するタッチ操作を検出して、フォアグラウンドアプリケーションとバックグラウンドアプリケーションとを切り替えるための命令などの対応する命令を生成するようにも構成され得る。
【0039】
図1に示される構造は、本開示の解決策と関連付けられた部分構造ブロック図にすぎず、本開示の解決策が適用される電子機器に限定されず、具体的には、電子機器は、図に示される部分より多いかまたは少ない部分を含んでいてもよく、またはいくつかの部分を結合してもよく、異なる部分配置を有していてもよいことを、当業者は理解できよう。例えば、電子機器は、システムバスを介して接続されたネットワークインターフェースをさらに含み、ネットワークインターフェースは、外部電子機器と通信し、例えば、サーバと通信するためのイーサネットカードや無線ネットワークカードであり得る。
【0040】
一実施形態では、
図2に示されるように、電子機器の部分アーキテクチャ図が提供される。電子機器のアーキテクチャシステムは、JAVA空間層210と、ローカルフレーム層220と、カーネル空間層230とを含む。JAVA空間層210は、凍結および解凍アプリケーション212を含むことができ、電子機器は、凍結および解凍アプリケーション212を介してアプリケーションごとの凍結ポリシーを実装して、バックグラウンドで電力を消費する関連アプリケーションに対して凍結操作を行い得る。ローカルフレーム層220は、リソース優先度および制限管理モジュール222と、プラットフォーム凍結管理モジュール224とを含む。電子機器は、リソース優先度および制限管理モジュール222を介してリアルタイムで異なるアプリケーションを異なる優先度および異なるリソースの編成で維持し、性能を最適化し、電力消費を削減するという効果を達成するように上位の要求に従ってアプリケーションプログラムのリソースカテゴリを調整し得る。電子機器は、プラットフォーム凍結管理モジュール224を介して凍結時間のエントリ所要時間に従って、凍結できるタスクをバックグラウンドで異なる事前設定対応凍結層に割り振り得る。あるいは、3つの凍結層、すなわち、CPU制約スリープモード、CPU凍結スリープモード、およびプロセス深凍結モードがあってもよい。CPU制約スリープモードは、関連プロセスによって占有されたCPUリソースを制約して、関連プロセスがより少ないCPUリソースを占有し、アイドルCPUリソースが他の未凍結プロセスに向けられ、CPUリソースの占有が制約され、ネットワークリソースおよび入力/出力(I/O)インターフェースリソースのためのプロセスの占有もこれに対応して制約されるようにすること、を指す。CPU凍結スリープモードは、関連プロセスがCPUを使用することを禁止し、メモリの占有を保持し、CPUリソースが禁止されると、対応するネットワークリソースおよびI/Oインターフェースリソースも禁止されること、を指す。プロセス深凍結モードは、CPUリソースを禁止することに加えて関連プロセスによって占有されたメモリをさらに回収し、回収されたメモリが他のプロセスの使用に供され得ること、を指す。カーネル空間層230は、ユーザ識別子(UID)管理モジュール231と、Cgroupモジュール232と、バインダ管理および制御モジュール233と、プロセスメモリ回収モジュール234と、凍結満了中止モジュール235とを含む。UID管理モジュール231は、アプリケーションのUIDに基づいて第三者アプリケーションのリソースを管理または凍結するように構成される。プロセス識別子(PID)に基づくプロセス管理および制御と比較して、UIDを介してユーザのアプリケーションリソースを均一に管理する方がより好都合である。Cgroupモジュール232は、完全な中央処理装置(CPU)、CPUSET、メモリ、I/Oおよびネット関連のリソース制限機構のセットを提供するように構成される。バインダ管理および制御モジュール233は、バックグラウンドバインダ通信の優先度を制御するように構成される。ローカルフレーム層220のインターフェースモジュールは上位層に展開されたバインダインターフェースを含み、上位層のフレームまたはアプリケーションは、提供されたバインダインターフェースを介してリソース優先度および制限管理モジュール222ならびにプラットフォーム凍結管理モジュール224にリソース制限または凍結命令を送る。プロセスメモリ回収モジュール234はプロセス深凍結モードを実装するように構成されるので、ある第三者アプリケーションが凍結状態にあるとき、プロセスファイル領域が主として解放され、それによって、メモリを節約し、アプリケーションの次の開始速度を上げるという効果が達成される。凍結満了中止モジュール235は、凍結満了シーンで生じた異常を解決するように構成される。上記のアーキテクチャを介して、本開示の様々な実施形態におけるメモリを処理するための方法が実装され得る。
【0041】
一実施形態では、
図3に示されるように、メモリを処理するための方法が提供される。本実施形態では、この方法が
図1に示される電子機器に適用される例を説明する。方法は以下の動作を含む。
【0042】
動作302で、処理されるべきアプリケーションによって占有された複数の回収可能なメモリページが決定される。
【0043】
処理されるべきアプリケーションは、その占有メモリが回収される必要があるアプリケーションを表す。通常、処理されるべきアプリケーションは、バックグラウンドアプリケーションである。バックグラウンドアプリケーションは、バックグラウンドで動作しているアプリケーションであり、これに対応して、フォアグラウンドで動作しているアプリケーションがフォアグラウンドアプリケーションである。アプリケーション(APP)の動作は通常、複数の関連付けられたプロセスの動作によって具体化される。プロセスは、あるデータセットに関するコンピュータ内のプログラムの操作アクティビティであり、リソース割り振りおよびスケジューリングのためのシステムの基本単位であり、オペレーティングシステム構造の基礎である。フォアグラウンドアプリケーションの動作に関与するプロセスがフォアグラウンドプロセスであり、バックグラウンドアプリケーションの動作に関与するプロセスがバックグラウンドプロセスである。
【0044】
動作状態のアプリケーションは、動作中のデータを格納するためにメモリ空間を占有する必要がある。異なる動作状態の異なるアプリケーションによって占有されるメモリ空間は必ずしも同じではない。メモリページはオペレーティングシステムのメモリ管理単位であり、異なる電子機器によって設定されたメモリページによって占有される単位メモリサイズは必ずしも同じではない。例えば、電子機器内のメモリ空間は100,000メモリページに分割されており、処理されるべきアプリケーションによって占有されたメモリページはメモリページ100からメモリページ200であり、その中のメモリページ130からメモリページ200が回収可能なメモリページである。
【0045】
一実施形態では、電子機器は、動作中に処理されるべきアプリケーションによって占有されたすべてのメモリページを事前記録でき、すべてのメモリページの中から回収可能なメモリページが決定される。回収可能なメモリページは、回収可能であり、処理されるべきアプリケーションまたは他のアプリケーションの動作に影響を及ぼさないか、わずかに影響を及ぼすメモリページを表す。
【0046】
一実施形態では、電子機器は、すべてのメモリページの中でどのメモリページが回収可能なメモリページであり、どのメモリページが回収可能ではないメモリページであるかを記録でき、記録情報に従って処理されるべきアプリケーションによって占有された回収可能なメモリページを決定し得る。
【0047】
動作304で、処理されるべきアプリケーションに対応する回収割合が決定される。
【0048】
回収割合は、回収されるべきメモリの回収の割合を表し、回収割合は、回収可能なメモリの回収の大きさを導くために使用される。例えば、回収部分は50%であり、これは占有メモリの50%が回収され得ることを表す。電子機器は、異なるアプリケーションに対応する回収割合を事前設定する。あるいは、異なる回収割合とアプリケーション識別子との間の対応関係が確立されてもよく、電子機器は、処理されるべきアプリケーションのアプリケーション識別子と回収割合との間の対応関係に従って対応する回収割合を決定し得る。アプリケーション識別子は、アプリケーションを一意に識別するために使用され、事前設定された桁の数、文字(letter)および他の文字(character)のうちの1つまたは複数によって構成され得る。
【0049】
一実施形態では、回収割合を処理されるべきアプリケーションの再開所要時間に従って決定でき、電子機器は、異なる割合に従って処理されるべきアプリケーションによって占有された回収可能なメモリページの回収を予備検査し得る。処理されるべきアプリケーションが、割合に対応するメモリページが回収された後で再開されるときに必要な開始所要時間が検出され、開始所要時間が再開所要時間である。異なる割合に対応する再開所要時間に従って比較的適切な割合が決定され、決定された割合が処理されるべきアプリケーションに対応する回収割合と見なされる。
【0050】
動作306で、回収可能なメモリページおよび回収割合に従って回収数が決定される。
【0051】
回収数は、メモリページの回収数であり、この数は整数である。回収数は、回収可能なメモリページの総数と決定された回収割合との積であり得る。積が整数ではない場合、積に近似した整数が選択され得る。例えば、最も近似した整数が四捨五入で回収数として決定され得るか、または対応する整数が、切り捨て法や繰り上げ法などの方法に従って回収数として決定され得る。
【0052】
本明細書では回収数は四捨五入で決定される。例えば、100の回収可能なメモリページがあるとき、回収割合が30.5%であり、得られた積が30.5である場合、100の回収可能なメモリページの中から31ページが回収され、回収割合が21.2%である場合、21ページが回収され得る。
【0053】
動作308で、回収可能なメモリページの中から回収数のメモリページが選択され、回収される。
【0054】
電子機器は、決定された回収数に従って、処理されるべきアプリケーションによって占有された回収可能なメモリページの中から回収数のメモリページを選択し、回収数のメモリページを回収して、フォアグラウンドアプリケーションまたは他のアプリケーションによって使用されるように回収数の回収可能なメモリページを解放することができ、それによって、システムの総体的な処理効率が改善される。あるいは、電子機器は、回収割合に従って上記のプロセスメモリ回収モジュール234を介して回収可能なメモリページの中からメモリページを回収し得るので、メモリページが回収された後、処理されるべきアプリケーションに及ぼす影響はわずかである。
【0055】
例えば、回収割合は30%であり、100の回収可能なメモリページがある。100の回収可能なメモリページの中から30のメモリページが回収される。すなわち、30の回収可能なメモリページが解放されるので、電子機器の30のアイドルメモリページがフォアグラウンドアプリケーションまたは他のバックグラウンドアプリケーションのために追加される。
【0056】
このメモリを処理するための方法では、処理されるべきアプリケーションによって占有された回収可能なメモリページおよび対応する回収割合が決定され、回収可能なメモリページおよび回収割合に従って回収数が決定され、回収可能なメモリページの中から回収数のメモリページが選択され、回収される。回収されるオブジェクトは回収可能なメモリページであり、必ずしもすべての回収可能なメモリページが回収されるとは限らないため、回収可能なメモリページは処理されるべきアプリケーションに対応する回収割合に従って回収され、よって処理されるべきアプリケーションに及ぼす動作影響が低減される。さらに、回収されたメモリページは解放され、他のアプリケーションによって使用され得るので、システムの総体的な処理効率も改善される。メモリを様々なアプリケーションのために割合として回収することにより、システムメモリ全体が増加したときに各アプリケーションに及ぼす悪影響がごくわずかであることが保証され、処理されるべきアプリケーションのメモリの回収と動作との間のバランスが維持される。
【0057】
一実施形態では、動作302は、処理されるべきアプリケーションによって占有されたメモリのすべてのメモリページを問い合わせすることと、すべてのメモリページの中から回収可能なメモリページを決定することとを含む。
【0058】
あるいは、電子機器は、異なるアプリケーションによって占有されたメモリのメモリページをリアルタイムで記録し、占有された各メモリページが回収可能であるかどうかを、リアルタイムでさらに記録してもよい。例えば、あるメモリページ内のデータが現在、他のアプリケーションまたは処理されるべきアプリケーションによって使用されている場合、そのメモリページは回収可能ではないメモリページであると判断され、占有メモリページ内のデータがアプリケーションによって使用されていないか、またはこの状態の時間が事前設定時間を超えると記録されている場合、そのメモリページは回収可能なメモリページであると判断される。
【0059】
事前に記録された情報から処理されるべきアプリケーションによって占有されたすべてのメモリページを問い合わせすることができ、記録された各メモリページの使用状態に従って、そのメモリページが回収可能なメモリページであるかどうかが判断され、次いですべての回収可能なメモリページが決定される。
【0060】
一実施形態では、処理されるべきアプリケーションによって占有されたメモリのすべてのメモリページを問い合わせする動作は、処理されるべきアプリケーションのメモリマップドファイルをトラバースすることと、メモリマップドファイルにおいて、処理されるべきアプリケーションによって占有されたすべてのメモリページを問い合わせすることと、を含む。
【0061】
メモリマップドファイルは、ファイルからメモリへのマッピングである。電子機器は、処理されるべきアプリケーションのための対応するメモリマップドファイルを確立し、メモリマップドファイルに、対応するアプリケーションによって占有されたメモリページが提供され、処理されるべきアプリケーションに対応するメモリマップドファイルがトラバースされ、処理されるべきアプリケーションによって占有されたメモリページがトラバースされた各メモリマップドファイルから読み出されるので、処理されるべきアプリケーションによって占有されたすべてのメモリページを決定でき、処理されるべきアプリケーションによって占有されたメモリページの問い合わせ効率および問い合わせの包括性が改善される。
【0062】
一実施形態では、すべてのメモリページの中から回収可能なメモリページを決定する動作は、すべてのメモリページから占有マークを持っているメモリページを除外することと、除外されたメモリページ以外のメモリページから回収可能なメモリページを決定することとを含む。
【0063】
処理されるべきアプリケーションによって占有されたすべての問い合わせされたメモリページについて、電子機器は、問い合わせされた各メモリページが占有マークを持っているかどうかまたは問い合わせされた各メモリページが複数のアプリケーションによって占有されているかどうかを検出し得る。占有マークは、対応するメモリページに格納されたデータが現在、処理されるべきアプリケーションによって使用されているか、または処理されるべきアプリケーションが正常な動作を保持するときにそのメモリページ内のデータが必要であることを表す。データが削除された後、処理されるべきアプリケーションは正常に動作できなくなるか、または対応するデータを格納するために新しいメモリページを繰り返し占有することが必要になる。電子機器は、対応するメモリページを回収できないことを示すために、これらのタイプの検出データを格納するメモリページに占有マークを設定し得る。
【0064】
処理されるべきアプリケーションによって占有されたメモリページに格納されたデータはまた、他のアプリケーションによって使用される可能性もある。すなわち、複数のアプリケーションがメモリページ内のデータを使用する。占有マークはこのタイプのメモリページにも設定され得るので、電子機器は、このタイプのメモリページが回収されないことを示すために、このタイプのメモリページも同様に除外する。
【0065】
除外されたメモリページに対して残ったメモリページが回収可能なメモリページであり、電子機器はこれらのメモリページからメモリを回収し得る。
【0066】
一実施形態では、電子機器は、
図2に示されるリソース優先度および制限管理モジュール222を呼び出して、処理されるべきアプリケーションのメモリマップドファイルをトラバースでき、メモリマップドファイルにおいて、処理されるべきアプリケーションによって占有されたすべてのメモリページが問い合わせされ、リソース優先度および制限管理モジュール222は、各メモリページが回収可能なメモリページであるかどうかを検出し、対応する占有マークが回収可能ではないメモリページに設定され、各メモリページが複数のアプリケーションによっても占有されているかどうかが記録され、問い合わせされたすべてのメモリページから占有マークを持っているメモリページおよび/または複数のアプリケーションによって占有されたメモリページが除外され、除外されたメモリページ以外のメモリページから回収可能なメモリページが決定される。
【0067】
一実施形態では、処理されるべきアプリケーションに対応する回収割合を決定する動作は、処理されるべきアプリケーションのアプリケーションタイプを決定することと、アプリケーションタイプに対応する回収モデルに従って計算された回収割合を決定することとを含む。
【0068】
アプリケーションタイプは、メモリ回収後に処理されるべきアプリケーションに及ぼす動作影響に従って設定されたタイプである。アプリケーションタイプは、無関係タイプ、線形タイプおよび非線形タイプを含む。無関係タイプは、処理されるべきアプリケーションの回収可能なメモリが回収された後で回収数にかかわらず対応するアプリケーションに対して目立った影響を表さない。線形タイプは、回収可能なメモリの回収割合の増加とともに、対応するアプリケーションの再開所要時間も増加し、再開所要時間と回収割合とが線形またはほぼ線形増加の関係を有することを表す。非線形タイプは、無関係タイプでも線形タイプでもない他のタイプを表す。目立った影響がないこととは、正常な開始所要時間に対する、異なる回収割合に対応する再開所要時間の超過する割合が事前設定割合範囲より小さいことを表す。ほぼ線形の増加とは、対応するおおよその傾きに従って異なる回収割合によって適合された再開所要時間と対応する回収割合の下での再開所要時間との間の誤差が事前設定範囲内の誤差を超えないことを表す。
【0069】
電子機器は、異なるアプリケーションについて、メモリが異なる回収割合に従って回収された後のアプリケーションに及ぼす影響に従ってこのアプリケーションに対応するアプリケーションタイプを設定する。電子機器は、アプリケーションタイプごとに対応する回収モデルをさらに設定し、回収モデルに従って、異なる割合に従って回収可能なメモリページが回収された後の各アプリケーションタイプに対応する再開所要時間のサイズを計算する。
【0070】
異なる回収割合および対応する再開所要時間に従って最適な回収割合が決定されるので、正常な開始所要時間に対してさほど大幅に増加しない再開所要時間を保持するという条件の下で、回収割合が最大になり、最適な回収割合が決定される。
【0071】
一実施形態では、処理されるべきアプリケーションのアプリケーションタイプが無関係タイプである場合、回収モデルを介して計算される回収割合は100%であり得る。すなわち、回収可能なメモリページは100%回収され得る。処理されるべきアプリケーションのアプリケーションタイプが非線形タイプである場合、適切な割合が回収割合として選択され得るので、回収されるメモリページの数と対応するアプリケーションの再開所要時間との間の費用対効果は最高になる。例えば、事前設定された所要時間閾値である再開所要時間に対応する割合を選択でき、その割合が回収割合と見なされる。あるいは、正常な開始所要時間の事前設定された倍数である再開所要時間に対応する割合を選択でき、その割合が回収割合と見なされる。事前設定された所要時間閾値または事前設定された倍数は、経験値に従って設定された適切な値であり得る。例えば、所要時間閾値は2秒または3秒であり、事前設定された倍数は1.5または2であり得る。
【0072】
処理されるべきアプリケーションのアプリケーションタイプが線形タイプである場合、対応する回収割合を異なる傾きに従って決定でき、傾きは、回収割合に対して異なる回収割合の下で対応する再開所要時間によって形成される曲線の傾斜の大きさを表す。傾きが大きくなると、決定される回収割合は、処理されるべきアプリケーションのメモリの回収と動作との間のバランスを維持するように、相対的に小さくなる
例えば、
図4A、
図4Bから
図4Cに示されるように、一実施形態における無関係のアプリケーション、線形アプリケーションおよび非線形アプリケーションの回収割合のグラフがそれぞれ提供されている。回収割合のグラフの水平座標は回収割合を表し、垂直座標は対応する回収割合の下での再開所要時間を表す。無関係のアプリケーションの回収割合のグラフは、異なる回収割合に従って対応するアプリケーションの回収可能なメモリページが回収された後で対応する再開所要時間が変化しないかまたはわずかに変化することを反映している。線形アプリケーションの回収割合のグラフの対応する傾きは、異なる回収割合の下で変化しないかまたはわずかに変化するが、非線形アプリケーションの回収割合のグラフは、一部の傾きは大きく、一部の傾きは小さい。非線形アプリケーションでは、回収可能なメモリページの回収割合として最小の傾きに対応する回収割合が選択され得る。
【0073】
一実施形態では、動作304は、処理されるべきアプリケーションに対応する回収割合と再開所要時間との間の対応関係を決定することであって、再開所要時間が、回収割合の処理されるべきアプリケーションによって占有された回収可能なメモリページが回収された後で処理されるべきアプリケーションを再開するための所要時間である、決定することと、回収割合と再開所要時間との間の対応関係に従って回収可能なメモリページの回収割合を決定することと、を含む、
電子機器は、アプリケーションごとに対応する回収割合と再開所要時間との間の対応関係を設定し得る。対応関係は、アプリケーションによって占有されたメモリから異なる割合の回収可能なメモリが回収された後の対応する再開所要時間を表す。あるいは、対応関係は、対応する回収割合と再開所要時間との間の比較表であるか、または回収割合のグラフであってもよい。グラフは、異なる回収割合の下での対応する再開所要時間である。異なる再開所要時間に対する対応関係に従って適切な回収割合が選択され、アプリケーションによって占有された回収可能なメモリページの回収割合と見なされる。
【0074】
あるいは、電子機器は、対応する開始所要時間閾値を設定してもよく、第2の開始所要時間が開始所要時間閾値に達したときに、対応する割合が回収可能なメモリページの回収割合として決定される。開始所要時間閾値は事前設定経験値であってもよく、さらに、異なるアプリケーションに対応する開始所要時間閾値が必ずしも同じであるとは限らない。例えば、対応する開始所要時間閾値は、対応するアプリケーションの正常な開始所要時間に従って決定されてもよく、正常な開始所要時間の1.5倍または2倍の所要時間が開始所要時間閾値と見なされる。
【0075】
回収割合は再開所要時間に従って決定され、それによって、処理されるべきアプリケーションのメモリの回収と動作との間のバランスが維持される。
【0076】
一実施形態では、動作308は、アイドル時間のサイズ降順に従って回収可能なメモリページの中から回収数のメモリページを選択し、回収数のメモリページを回収すること、またはメモリページの通し番号に従って等間隔で回収可能なメモリページの中から回収数のメモリページを選択し、回収数のメモリページを回収すること、を含む。
【0077】
あるいは、電子機器は、回収数に従って回収可能なメモリページの中からメモリページをランダムに回収し得るか、またはメモリページの通し番号に従って等間隔で回収可能なメモリページの中から回収数のメモリページを選択し、回収数のメモリページを回収し得る。メモリページの通し番号は、電子機器によってメモリページに設定された番号であり、メモリページは、1、2、3、以下同様の順序で付番され得る。例えば、回収割合が33%である場合、決定される均一な回収間隔は、2つのメモリページの回収間隔である。例えば、回収可能なメモリページはメモリページ1からメモリページ100であり、よって、メモリページ1、メモリページ4、メモリページ7、メモリページ10、…、メモリページ97、およびメモリページ100を順に回収でき、それによって、回収可能なメモリページの33%の回収が実現される。均一な間隔で回収することにより、連続したメモリの各セグメントを完全に回収できないことが保証され、それによって、アプリケーションが再開されるときにより安定する。
【0078】
一実施形態では、メモリページはまたメモリページのアイドル時間に従って回収され得る。電子機器は、処理されるべきアプリケーションのための各メモリページのアイドル時間を記録し、アイドル時間から回収数のメモリページをサイズ降順に選択し、回収数のメモリページを回収し得る。
【0079】
メモリページに格納されたデータは必ずしもアプリケーションによって使用されるとは限らないため、メモリページのアイドル時間は、メモリページに格納されたデータが、システムが処理されるべきアプリケーションにメモリを割り振った後で最近使用されてから非使用状態にある時間を表す。電子機器は、各メモリページのデータ使用状況に従ってリアルタイムで各メモリページのアイドル時間を更新し、処理されるべきアプリケーションによって占有されたメモリページを回収する準備が整うと、最近記録された各回収可能なメモリページのアイドル時間が決定され得る。
【0080】
40%の回収割合を例にとり、そのアイドル時間が最初の40%以内である回収可能なメモリページが回収され得る。アイドル時間に従ってメモリページを回収することにより、長時間にわたって占有された回収可能なメモリページを即時に回収でき、それによって処理されるべきアプリケーションに及ぼす影響が低減される。
【0081】
一実施形態では、回収可能な各メモリページのタイムスタンプによって記録された更新時刻が決定され、更新時刻に従って対応する回収可能なメモリページのアイドル時間が計算される。
【0082】
電子機器は、上記のリソース優先度および制限管理モジュール222を介してメモリページごとのタイムスタンプを作成でき、タイムスタンプは対応する更新時刻を記録するために使用され、更新時刻は、対応するメモリページの最近の使用時刻を表す。各メモリページ内のメモリが使用されていることが検出されると、タイムスタンプによって記録された更新時刻が更新され得る。
【0083】
メモリページの割り振りを最近開始した、メモリページを回収した、解放したなどという状況下では、またはプロセッサ内のキャッシュの使用状態を問い合わせしたという状況下では、これに対応して関与するメモリページ内のデータが使用されると判断され、対応する状況下でのシステム時刻が更新時刻として生成される。メモリ回収機構が実行され始めると、対応するメモリページのアイドル時間が、タイムスタンプによって記録された更新時刻および現在のシステム時刻に従って計算され得る。現在時刻と最新時刻との差が対応するメモリページのアイドル時間である。
【0084】
各回収可能なメモリページの更新時刻はソフトウェアを介してタイムスタンプを作成するという方法で記録され、アイドル時間は更新時刻に従って決定されるので、異なるプロセッサが効果的に共存でき、メモリ回収の普遍性が改善される。
【0085】
一実施形態では、LRU管理ユニットを介して記録された回収可能な各メモリページの更新時刻が決定され、更新時刻に従って対応する回収可能なメモリページのアイドル時間が計算される。
【0086】
対応するLRU管理ユニットは、プロセッサ内のメモリ管理またはキャッシュユニットに配置され、最近使用されたメモリに関する統計をとるように構成される。LRU管理ユニットは、各メモリアドレスおよび各メモリアドレスの更新時刻を記録でき、あるアドレスに対応するメモリが使用されると、プロセッサは対応するメモリアドレスおよび更新時刻を保存のためにLRU管理ユニットに入れる。メモリ回収機構が実行され始めると、メモリアドレスとメモリページとの間の対応関係に従って各メモリアドレスに対応するメモリページが分かるので、LRU管理ユニットから対応するメモリページの更新時刻を読み出すことができる。メモリページの割り振りを最近開始した、メモリページを回収した、解放したなどという状況下では、またはプロセッサ内のキャッシュの使用状態を問い合わせしたという状況下では、これに対応して関与するメモリページ内のデータが使用されると判断され、対応する状況下でのシステム時刻が更新時刻として生成される。
【0087】
LRU管理ユニットが満了すると、割り込み情報が生成されてオペレーティングシステムに通知され、オペレーティングシステムは、LRU管理ユニットのデータを読み出した後でLRU管理ユニット内のデータを空にできるので、LRU管理ユニットは、各メモリアドレスや対応する更新情報などの情報を格納する作業を再開し得る。
【0088】
本実施形態では、LRU管理ユニットを作成することによって、各メモリの使用状態を正確に追跡でき、それによって、メモリページの更新時刻の検出精度が改善されるとともに、メモリ回収の利便性も改善される。
【0089】
一実施形態では、
図5に示されるように、メモリを処理するための別の方法が提供される。方法は以下の動作を含む。
【0090】
動作502で、処理されるべきアプリケーションのメモリマップドファイルがトラバースされ、メモリマップドファイルにおいて、処理されるべきアプリケーションによって占有されたすべてのメモリページが問い合わせされる。
【0091】
一実施形態では、電子機器は、システムのメモリ使用率が事前設定割合を超えることが検出されるか、またはユーザ操作によってトリガされたメモリ回収命令が受け取られると、メモリ回収機構をトリガし、すべての動作中のアプリケーションの中からメモリ回収アプリケーションを決定でき、決定されたアプリケーションが処理されるべきアプリケーションである。
【0092】
一実施形態では、あるアプリケーションがフォアグラウンドからバックグラウンドに切り替えられることを検出し、そのアプリケーションを、プラットフォーム凍結管理モジュール224を介してプロセス深凍結モードに設定した後、電子機器はアプリケーションのメモリ回収機構をトリガし得る。
【0093】
電子機器は、上記のリソース優先度および制限管理モジュール222を介して処理されるべきアプリケーションのメモリマップドファイルをトラバースし、トラバースされた各メモリマップドファイルから処理されるべきアプリケーションによって占有されたメモリページを問い合わせし得るので、処理されるべきアプリケーションによって占有されたすべてのメモリページを問い合わせすることができる。
【0094】
動作504で、すべてのメモリページから占有マークを持っているメモリページが除外され、除外されたメモリページ以外のメモリページから回収可能なメモリページが決定される。
【0095】
問い合わせされた各メモリページに二次トラバースが行われてもよく、二次トラバースは、問い合わせされた各メモリページが回収可能なメモリページであるかどうかを検出するために使用され、占有マークを持っているメモリページが検出されると、そのメモリページは回収可能ではないメモリページであると判断され、そのメモリページは除外され、二次トラバース後に得られたメモリページが回収可能なメモリページであり、電子機器は、すべての回収可能なメモリページの中からメモリページを選択し、そのメモリページを回収し得る。二次トラバースは、回収可能なメモリページの検出の包括性を改善し得る。
【0096】
動作506で、処理されるべきアプリケーションのアプリケーションタイプが決定され、アプリケーションタイプに対応する回収モデルによって計算された回収割合が決定される。
【0097】
アプリケーションタイプは、無関係タイプ、線形タイプおよび非線形タイプを含む。異なるアプリケーションタイプは異なる回収モデルに対応する。電子機器は、各アプリケーションのアプリケーションタイプを記録し、アプリケーションタイプに従って対応する回収モデルを決定し、回収モデルから異なる回収割合に対応する再開所要時間を問い合わせし、異なる再開所要時間に従って回収モデルから適切な再開所要時間に対応する回収割合を選択し、その回収割合を回収可能なメモリページの回収割合と見なす。
【0098】
動作508で、回収可能なメモリページおよび回収割合に従って回収数が決定され、回収数のメモリページが、メモリページの通し番号に従って等間隔で回収可能なメモリページの中から選択され、回収される。
【0099】
一実施形態では、電子機器は、上記のリソース優先度および制限管理モジュール222を介してプロセスメモリ回収モジュール234に決定された回収数を送り、受け取られた回収数に従ってプロセスメモリ回収モジュール234を介して処理されるべきアプリケーションによって占有された回収可能なメモリページを回収し得る。あるいは、回収可能なメモリページ間の回収間隔が回収割合に従って決定されてもよく、回収間隔に従って回収可能なメモリページが選択され、選択された回収可能なメモリページが回収される。
【0100】
例えば、決定された回収割合が50%である場合、回収は回収可能なメモリページの間隔で行われ得る。回収割合が80%である場合、4つの連続したメモリページが回収されるたびに1つの回収可能なメモリページを保持でき、それによって、連続したメモリの各セグメントを完全に回収できないことが保証され、アプリケーションが再開されるときにより安定する。
【0101】
このメモリを処理するための方法では、処理されるべきアプリケーションによって占有された回収可能なメモリページおよび対応する回収割合が決定され、回収可能なメモリページおよび回収割合に従って回収数が決定され、回収可能なメモリページの中から回収数のメモリページが選択され、回収される。回収されるオブジェクトは回収可能なメモリページであり、必ずしもすべての回収可能なメモリページが回収されるとは限らないため、回収可能なメモリページは処理されるべきアプリケーションに対応する回収割合に従って回収され、よって処理されるべきアプリケーションに及ぼす動作影響が低減される。さらに、回収されたメモリページは解放され、他のアプリケーションによって使用され得るので、システムの総体的な処理効率も改善される。メモリを様々なアプリケーションのために割合として回収することにより、システムメモリ全体が増加したときに各アプリケーションに及ぼす悪影響がごくわずかであることが保証され、処理されるべきアプリケーションのメモリの回収と動作との間のバランスが維持される。
【0102】
一実施形態では、処理されるべきアプリケーションによって占有された複数の回収可能なメモリページを決定することの前に、本方法は、フォアグラウンドアプリケーションが処理されるべきアプリケーションに依存しているかどうかを検出することと、そうである場合、処理されるべきアプリケーションの優先度をフォアグラウンドアプリケーションと一致するように調整することと、そうでない場合、処理されるべきアプリケーションによって占有された回収可能なメモリページを決定する動作を行うことと、をさらに含む。
【0103】
一実施形態では、フォアグラウンドアプリケーションが処理されるべきアプリケーションに対する依存関係を終了すると、処理されるべきアプリケーションによって占有された回収可能なメモリページを決定する動作が行われる。
【0104】
依存関係は、あるアプリケーションが別の1つまたは複数のアプリケーションのデータを使用することにより別のアプリケーションの正常な動作をより円滑に実装できることを表す。依存関係を有する2つのアプリケーションがそれぞれ被依存アプリケーションと依存アプリケーションとであり、電子機器は、フォアグラウンドアプリケーションによって依存されており、フォアグラウンドアプリケーションによって依存されているバックグラウンドアプリケーションとしてバックグラウンドで動作する、検出された処理されるべきアプリケーションを決定する。電子機器は、フォアグラウンドアプリケーションによって依存されている検出されたバックグラウンドアプリケーションに対応する被依存マークを設定し、バックグラウンド・アプリケーション・プールの中から被依存マークを有するバックグラウンドアプリケーションを決定し、そのバックグラウンドアプリケーションをフォアグラウンドアプリケーションによって依存されているバックグラウンドアプリケーションとして決定し得る。フォアグラウンドアプリケーションはフォアグラウンドで動作しているアプリケーションである。
【0105】
処理されるべきアプリケーションがフォアグラウンドアプリケーションによって依存されている場合、処理されるべきアプリケーションをフォアグラウンドアプリケーションによって依存されているアプリケーションとして決定でき、フォアグラウンドアプリケーションによって依存されている処理されるべきアプリケーションの優先度は、フォアグラウンドアプリケーションの優先度と一致するように調整される。
【0106】
あるいは、電子機器は、フォアグラウンドアプリケーションによって依存されている問い合わせされた処理されるべきアプリケーションの優先度を調整し得るので、調整された優先度はフォアグラウンドアプリケーションの優先度と一致する。電子機器は、フォアグラウンドアプリケーションによって依存されている異なる処理されるべきアプリケーションの優先度とフォアグラウンド優先度との間の一致関係を設定し得る。フォアグラウンドアプリケーションによって依存されていることに適用できる処理されるべきアプリケーションの対応する優先度はこの一致関係に従って決定され、フォアグラウンドアプリケーションによって依存されている処理されるべきアプリケーションの優先度はこの優先度に合わせて調整されるので、フォアグラウンドアプリケーションによって依存されている処理されるべきアプリケーションのリソース制限の程度が低減され、フォアグラウンドアプリケーションによって依存されている処理されるべきアプリケーションに利用可能なリソースの制限の程度は、フォアグラウンドアプリケーションの制限の程度と一致する。
【0107】
一実施形態では、フォアグラウンドアプリケーションの優先度と一致する優先度は、フォアグラウンドアプリケーションの優先度と同じ優先度であり得る。すなわち、電子機器は、フォアグラウンドアプリケーションによって依存されている処理されるべきアプリケーションの優先度を、フォアグラウンドアプリケーションの優先度と同じ優先度に合わせて調整し得るので、フォアグラウンドアプリケーションによって依存されている処理されるべきアプリケーションに利用可能なリソースの制限の程度はフォアグラウンドアプリケーションの制限の程度と同じである。
【0108】
処理されるべきアプリケーションに対する依存関係を検出することにより、フォアグラウンドアプリケーションによって依存されている処理されるべきアプリケーションの優先度は、フォアグラウンドアプリケーションと一致する優先度に合わせて調整される。フォアグラウンドアプリケーションの優先度は通常最高であるため、利用可能なリソースの対応する制限の程度は最低であり、バックグラウンドプロセスの優先度は、バックグラウンドプロセスによる過剰なリソースの占有に起因するフォアグラウンドアプリケーションに及ぼす影響を防止するために、より低い。しかしながら、バックグラウンドプロセスにはフォアグラウンドアプリケーションによって依存されているという状況があり、被依存バックグラウンドプロセスの実行効率もフォアグラウンドアプリケーションに影響を及ぼし得る。本開示の実施形態では、依存されている処理されるべきアプリケーションの優先度をフォアグラウンド優先度と一致する優先度に合わせて調整することにより、依存されている処理されるべきアプリケーションに利用可能なリソースの制限の程度を低減でき、依存されている処理されるべきアプリケーションの処理効率が改善される。依存されている処理されるべきアプリケーションの処理効率が改善されるので、依存されている処理されるべきアプリケーションに依存しているフォアグラウンドアプリケーションの処理効率も改善される。
【0109】
一実施形態では、処理されるべきアプリケーションとフォアグラウンドアプリケーションとの間にソケット通信、バインダ通信、メモリ共有またはロック待機が存在する場合、バックグラウンドプロセスとフォアグラウンドアプリケーションとの間に通信機構が存在すると判断される。
【0110】
フォアグラウンドアプリケーションとの通信機構を有するバックグラウンドプロセスが存在するかどうかは、以下の方法のうちのいずれか1つまたは複数で検出され得る。
【0111】
(1)フォアグラウンドアプリケーションとのソケットおよび/またはバインダ通信を有するバックグラウンドプロセスが存在するかどうかを検出すること、
(2)フォアグラウンドアプリケーションとのメモリ共有を有するバックグラウンドプロセスが存在するかどうかを検出すること、および
(3)フォアグラウンドアプリケーションとのロックリソースを待機しているバックグラウンドプロセスが存在するかどうかを検出すること。
【0112】
電子機器は、バインダドライブでフォアグラウンドアプリケーションとバックグラウンドプロセスとの間にバインダ通信が存在するかどうかを検出するための検出機構を提供し、バインダドライブで提供された検出機構を呼び出してフォアグラウンドアプリケーションとのバインダ通信を有するバックグラウンドプロセスを検出し、検出されたバックグラウンドプロセスをフォアグラウンドアプリケーションによって依存されているバックグラウンドプロセスとして決定し得る。
【0113】
一実施形態では、電子機器は、様々なロックリソースを検出でき、ロックリソースはスレッドロック、ファイルハンドル、信号などを含む。ロック待機、すなわちロックリソース待機が各ロックリソースに発生しているかどうかが検出され得る。ロック待機が生成されていることが検出されると、待機挙動がフォアグラウンドアプリケーションで発生しているかどうかがさらに検出され得る。そうである場合、ロックリソースを待機しているすべてのバックグラウンドプロセスがトラバースされ、ロックリソースを待機している検出されたバックグラウンドプロセスは、フォアグラウンドアプリケーションによって依存されているバックグラウンドプロセスとして決定される。
【0114】
一実施形態では、電子機器は、オペレーティングシステムのカーネル空間でロックリソース監視モジュールおよび優先度調整モジュールを提供し、ロックリソース監視モジュールをカーネルの元の待機インターフェースに組み込み得る。ロックリソース監視モジュールは、スレッドロック、ファイルハンドル、信号などの様々なロックリソースが待機しているかどうか、および待機挙動がフォアグラウンドアプリケーションで発生しているかどうかを検出し、そうである場合、検出されたメッセージを優先度調整モジュールに送る。優先度調整モジュールは、ロックリソースを待機しているすべてのバックグラウンドプロセスをトラバースし、これらのバックグラウンドプロセスを、フォアグラウンドアプリケーションによって依存されているバックグラウンドプロセスとして決定する。優先度調整モジュールは、対応する処理されるべきアプリケーションの優先度を一致する優先度に合わせて調整する。
【0115】
一実施形態では、バックグラウンドプロセスとフォアグラウンドアプリケーションとの間に同期機構が存在する場合、同期機構を有する処理されるべきアプリケーションは、フォアグラウンドアプリケーションによって依存されているバックグラウンドプロセスとして決定される。
【0116】
電子機器はまた、futexシステムを呼び出すことによって、フォアグラウンドアプリケーションとの同期機構を有するバックグラウンドプロセスがバックグラウンド・プロセス・セットに存在するかどうかを検出し、同期機構を有するバックグラウンドプロセスをフォアグラウンドアプリケーションによって依存されているバックグラウンドプロセスとして決定し得る。
【0117】
並行プログラミングでは、各プロセスのパブリック変数へのアクセスが制約されなければならず、この制約は同期と呼ばれる。オペレーティングシステムでは、ユーザモードの同期機構がfutexシステムを呼び出すことによって実装され得る。ユーザモードは非特権状態を指す。同期機構は、セマフォ、排他的ロックなどを含む。futexシステムを呼び出すことによってフォアグラウンドアプリケーションとの任意の1つの同期機構を有するバックグラウンドプロセスが存在することが検出されると、検出されたバックグラウンドプロセスは、フォアグラウンドアプリケーションによって依存されているバックグラウンドプロセスとして決定され得る。
【0118】
フォアグラウンドアプリケーションとバックグラウンドプロセスとの間の通信機構および/または同期機構を検出することにより、フォアグラウンドアプリケーションとの通信機構および/または同期機構を有する検出されたバックグラウンドプロセスは、フォアグラウンドアプリケーションによって依存されているバックグラウンドプロセスとして決定されるので、フォアグラウンドアプリケーションによって依存されている処理されるべきアプリケーションの検出効率を改善することができる。
【0119】
図3および
図5の流れ図の様々な動作は矢印の指示に従って順に表示されているが、これらの動作は必ずしも矢印によって示された順で行われるとは限らないことを理解されたい。本明細書で明記されない限り、これらの動作に対する厳密な順序制限はなく、これらの動作は他の順序で行われ得る。さらに、
図3および
図5の少なくともいくつかの動作は複数の下位動作または複数の段階を含むことができ、これらの下位動作または段階は必ずしも同時に完了されるとは限らず、異なる時点で行われ得る場合もあり、これらの下位動作または段階は必ずしも順に行われるとは限らず、他の動作または他の動作の下位動作もしくは段階と交替でまたは交互に行われる場合もある。
【0120】
一実施形態では、
図6に示されるように、メモリ処理装置が提供される。本装置は、メモリページ取得モジュール602と、回収割合取得モジュール604と、メモリ回収モジュール606とを含む。メモリページ取得モジュール602は、処理されるべきアプリケーションによって占有された回収可能なメモリページを決定するように構成される。回収割合取得モジュール604は、処理されるべきアプリケーションに対応する回収割合を決定するように構成される。またメモリ回収モジュール606は、回収可能なメモリページおよび回収割合に従って回収数を決定し、回収可能なメモリページの中から回収数のメモリページを選択し、回収数のメモリページを回収するように構成される。
【0121】
一実施形態では、メモリページ取得モジュール602は、処理されるべきアプリケーションによって占有されたメモリのすべてのメモリページを問い合わせし、すべてのメモリページから占有マークを持っているメモリページを除外し、除外されたメモリページ以外のメモリページから回収可能なメモリページを決定する、ようにさらに構成される。
【0122】
一実施形態では、メモリページ取得モジュール602は、処理されるべきアプリケーションのメモリマップドファイルをトラバースし、メモリマップドファイルにおいて、処理されるべきアプリケーションによって占有されたすべてのメモリページを問い合わせする、ようにさらに構成される。
【0123】
一実施形態では、回収割合取得モジュール604は、処理されるべきアプリケーションのアプリケーションタイプを決定し、アプリケーションタイプに対応する回収モデルによって計算された回収割合を決定するようにさらに構成される。
【0124】
一実施形態では、回収割合取得モジュール604は、処理されるべきアプリケーションに対応する回収割合と再開所要時間との間の対応関係を決定し、再開所要時間が、回収割合の処理されるべきアプリケーションによって占有された回収可能なメモリページが回収された後で処理されるべきアプリケーションを再開するための所要時間であり、回収割合と再開所要時間との間の対応関係に従って回収可能なメモリページの回収割合を決定する、ようにさらに構成される。
【0125】
一実施形態では、メモリ回収モジュール606は、アイドル時間のサイズ降順に従って回収可能なメモリページの中から回収数のメモリページを選択し、回収数のメモリページを回収するか、またはメモリページの通し番号に従って等間隔で回収可能なメモリページの中から回収数のメモリページを選択し、回収数のメモリページを回収する、ようにさらに構成される。
【0126】
一実施形態では、
図7に示されるように、別のメモリ処理装置が提供される。本装置は、依存関係検出モジュール608と、優先度調整モジュール610とをさらに含む。
【0127】
依存関係検出モジュール608は、フォアグラウンドアプリケーションが処理されるべきアプリケーションに依存しているかどうかを検出するように構成される。
【0128】
優先度調整モジュール610は、処理されるべきアプリケーションがフォアグラウンドアプリケーション依存されている場合、処理されるべきアプリケーションの優先度をフォアグラウンドアプリケーションと一致するよう調整するように構成される。
【0129】
本メモリ処理装置では、処理されるべきアプリケーションによって占有された回収可能なメモリページおよび対応する回収割合が決定され、回収可能なメモリページおよび回収割合に従って回収数が決定され、回収可能なメモリページの中から回収数のメモリページが選択され、回収される。回収されるオブジェクトは回収可能なメモリページであり、必ずしもすべての回収可能なメモリページが回収されるとは限らないため、回収可能なメモリページは処理されるべきアプリケーションに対応する回収割合に従って回収され、よって処理されるべきアプリケーションに及ぼす動作影響が低減される。さらに、回収されたメモリページは解放され、他のアプリケーションによって使用され得るので、システムの総体的な処理効率も改善される。メモリを様々なアプリケーションのために割合として回収することにより、システムメモリ全体が増加したときに各アプリケーションに及ぼす悪影響がごくわずかであることが保証され、処理されるべきアプリケーションのメモリの回収と動作との間のバランスが維持される。
【0130】
上記のメモリ処理装置における各モジュールの分割は例示のためにすぎず、他の実施形態では、本メモリ処理装置は、上記のメモリ処理装置の全部または一部の機能を完了する必要に応じて異なるモジュールに分割され得る。
【0131】
本メモリ処理装置に関する特定の制限についてはメモリを処理するための方法に対する制限を参照でき、ここでは詳述しない。上記のメモリ処理装置の様々なモジュールは、ソフトウェア、ハードウェア、またはそれらの組み合わせによって全部または一部が実装され得る。様々なモジュールは、ハードウェアの形態で電子機器のプロセッサに組み込まれるかまたはプロセッサから独立していてもよく、プロセッサが呼び出して各モジュールに対応する動作を行うために、ソフトウェアの形態で電子機器のメモリに格納されていてもよい。
【0132】
本開示の実施形態で提供されるメモリ処理装置の各モジュールは、コンピュータプログラムの形態で実装され得る。コンピュータプログラムは、端末やサーバなどの電子機器で動作し得る。電子機器のメモリにはコンピュータプログラムによって形成されたプログラムモジュールが格納され得る。コンピュータプログラムは、プロセッサによって、本開示の実施形態に記載されるメモリを処理するための方法の動作を実装するために実行される。
【0133】
一実施形態では、電子機器が提供され、電子機器は、メモリと、プロセッサと、メモリに格納された、プロセッサ上で動作可能なコンピュータプログラムとを含み、プロセッサは、様々な実施形態で提供されるメモリを処理するための方法の動作を実装するためにコンピュータプログラムを実行する。
【0134】
一実施形態では、コンピュータ可読記憶媒体も提供され、コンピュータ可読記憶媒体はコンピュータプログラムを格納しており、コンピュータプログラムは、プロセッサによって、本開示の様々な実施形態に記載されるメモリを処理するための方法の動作を実装するために実行される。
【0135】
一実施形態では、命令を含むコンピュータプログラム製品が提供される。本コンピュータプログラム製品はコンピュータで動作し、コンピュータは、本開示の様々な実施形態に記載されるメモリを処理するための方法を行う。
【0136】
本開示の実施形態はコンピュータ装置も提供する。
図8に示されるように、説明の便宜上、本開示の実施形態と関連付けられた部分だけが示されている。開示されていない特定の技術的詳細については、本開示の実施形態における方法の部分を参照されたい。コンピュータ端末は、携帯電話、タブレットコンピュータ、パーソナル・デジタル・アシスタント(PDA)、POSシステム(POS)、車載コンピュータ、およびウェアラブル装置を含む任意の端末機器であり得る。携帯電話はコンピュータ端末と見なされる。
【0137】
図8は、本開示の一実施形態によるコンピュータ端末と関連付けられた携帯電話の部分構造のブロック図である。
図8である、携帯電話は、無線周波数(RF)回路810、メモリ820、入力部830、表示部840、センサ850、オーディオ回路860、ワイヤレスフィデリティ(Wi‐Fi)モジュール870、プロセッサ880、電源890、および他の部分を含む。
図8に示される携帯電話構造は携帯電話に限定されず、携帯電話は、図に示されている部分より多いかもしくは少ない部分を含むか、またはいくつかの部分を組み合わせるか、または異なる部分配置を有していてもよい。
【0138】
RF回路810は、情報の受信および送信中もしくは呼び出し中に信号を受信および送信するように構成されていてもよく、基地局の下り情報を受信し、次いで処理のためにプロセッサ880にその情報を送信してもよく、または基地局に上りデータを送信してもよい。通常、RF回路は、アンテナ、少なくとも1つの増幅器、送受信機、結合器、低雑音増幅器(LNA)、デュプレクサなどを含むが、これに限定されない。加えて、RF回路810は、無線通信およびネットワークを介して他の装置とさらに通信し得る。無線通信は、グローバル・システム・オブ・モバイル・コミュニケーションズ(GSM)、汎用パケット無線サービス(GPRS)、符号分割多元接続(CDMA)、広帯域符号分割多元接続(WCDMA)、ロング・ターム・エボリューション(LTE)、電子メール、ショート・メッセージ・サービス(SMS)などを含むがこれに限定されない任意の1つの通信規格またはプロトコルを使用し得る。
【0139】
メモリ820は、ソフトウェアプログラムとモジュールとを格納するように構成されてもよく、プロセッサ880は、メモリ820に格納されたソフトウェアプログラムとモジュールとを動作させることによって携帯電話の様々な機能APPおよびデータ処理を実行する。メモリ820は主に記憶プログラム領域と記憶データ領域とを含むことができ、記憶プログラム領域はオペレーションシステム、少なくとも1つの機能に必要なAPP(音再生機能のアプリケーションプログラム、画像再生機能のアプリケーションプログラムなど)などを格納し得る。また記憶データ領域は、携帯電話の使用に従って作成されたデータ(オーディオデータ、連絡先など)を格納し得る。加えて、メモリ820は高速RAMを含んでいてもよく、ディスク記憶装置などの不揮発性メモリ、フラッシュデバイス、または他の不揮発性固体記憶装置をさらに含み得る。
【0140】
入力部830は、デジタルまたは文字情報を受け取り、携帯電話800のユーザ設定および機能制御と関連付けられたキー信号入力を生成するように構成され得る。具体的には、入力部830は、タッチパネル831と他の入力装置832とを含み得る。タッチパネル831はタッチスクリーンとも呼ばれ、ユーザの表面または付近でのタッチ操作(指やスタイラスなどの任意の適切な物体または付属品を使用したタッチパネル831の表面またはタッチパネル831の付近でのユーザの操作など)を収集し、事前設定プログラムに従って対応する接続装置を駆動する。一実施形態では、タッチパネル831は、タッチ検出装置とタッチコントローラとを含み得る。タッチ検出装置は、ユーザのタッチの向きを検出し、タッチ操作によってもたらされた信号を検出し、その信号をタッチコントローラに送る。またタッチコントローラは、タッチ検出装置からタッチ情報を受け取り、それをタッチ座標に変換し、そのタッチ座標をプロセッサ880に送り、プロセッサ880によるコマンドを受け取り、コマンドを実行することができる。加えて、タッチパネル831は、抵抗、静電容量、赤外線、表面弾性波などの複数のタイプを使用して実装されてもよい。入力部830は、タッチパネル831に加えて、他の入力装置832をさらに含み得る。具体的には、その他の入力装置832は、物理キーボード、機能キー(音量制御キーやスイッチキーなど)などのうちの1つまたは複数を含み得るが、これに限定されない。
【0141】
表示部840は、ユーザによって入力された情報またはユーザに提供された情報または携帯電話の様々なメニューを表示するように構成され得る。表示部840は表示パネル841を含み得る。一実施形態では、表示パネル841は、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)などの形態で構成され得る。一実施形態では、タッチパネル831は表示パネル841をカバーでき、タッチパネル831が表面または付近でのタッチ操作を検出すると、そのタッチ操作はタッチイベントのタイプを決定するためにプロセッサ880に送られ、次いでプロセッサ880は、タッチイベントのタイプに従って表示パネル841上に対応する視覚出力を提供する。タッチパネル831および表示パネル841は、
図8では2つの独立した部分として働くことによって携帯電話の入力および入力機能を実装するが、タッチパネル831および表示パネル841は、いくつかの実施形態では、携帯電話の入力および入力機能を実装するために一体化され得る。
【0142】
携帯電話800は、光センサ、動きセンサ、他のセンサなどの少なくとも1つのセンサ850をさらに含み得る。具体的には、光センサは周囲光センサおよび近接センサを含んでいてもよく、周囲光センサは、周囲光の明るさに従って表示パネル841の輝度を調整でき、近接センサは、表示パネル841および/またはバックライトを閉じることができる。動きセンサは、加速度計センサをさらに含んでいてもよく、加速度計センサは、各方向の加速度の大きさを検出し、止まっている間の重力の大きさおよび方向を検出し得る。加速度計センサは、携帯電話ジェスチャのAPP(例えば、水平画面と垂直画面の切り替え)、および振動識別関連機能(例えば、歩数計やノッキング)を識別するように構成され得る。加えて、携帯電話は、ジャイロスコープセンサ、気圧計センサ、湿度計センサ、温度計センサ、赤外線センサなどの他のセンサでも構成され得る。
【0143】
オーディオ回路860、スピーカ861およびマイクロフォン862は、ユーザと携帯電話との間のオーディオインターフェースを提供し得る。オーディオ回路860は、受け取られたオーディオデータから変換された電気信号をスピーカ861に送ることができ、スピーカ861はその電気信号を出力のために音響信号に変換する。さらに、マイクロフォン862は、収集された音響信号を電気信号に変換し、オーディオ回路860は受け取られた電気信号をオーディオデータに変換し、次いでそのオーディオデータを処理のためにプロセッサ880に出力し、オーディオデータはRF回路810を介して別の携帯電話に送られるか、またはオーディオデータはさらに処理するためにメモリ820に出力される。
【0144】
Wi‐Fiは短距離伝送技術に属し、携帯電話は、Wi‐Fiモジュール870によってユーザが電子メールを受信および送信したり、ウェブページを閲覧したり、ストリーミングメディアにアクセスしたりするのを支援でき、ユーザに無線広帯域インターネットアクセスを提供する。
図8にはWi‐Fiモジュール870が示されているが、Wi‐Fiモジュールは携帯電話800の必須構成要素には属さず、必要に応じて省くことができる。
【0145】
プロセッサ880は、携帯電話のコントロールセンタであり、様々なインターフェースおよび線を使用して携帯電話全体のすべての部分を接続し、メモリ820に格納されたソフトウェアプログラムおよび/またはモジュールを動作させるかまたは実行し、メモリ820に格納されたデータを呼び出して、携帯電話の様々な機能および処理を実行して、携帯電話を完全に監視するように構成される。一実施形態では、プロセッサ880は、1つまたは複数の処理装置を含み得る。一実施形態では、プロセッサ880は、アプリケーションプロセッサおよび変調・復調プロセッサと統合されていてもよく、アプリケーションプロセッサはオペレーションシステム、ユーザインターフェース、アプリケーションプログラムなどを主に処理し、変調・復調プロセッサは無線通信を主に処理する。変調・復調プロセッサはプロセッサ880と統合されていなくてもよいことが理解されよう。例えば、プロセッサ880は、アプリケーションプロセッサとベースバンドプロセッサとを統合してもよく、ベースバンドプロセッサと他の周辺チップとは変調・復調プロセッサを構成し得る。携帯電話800は、各構成要素に電力を供給するための電源890(電池など)をさらに含み得る。好ましくは、電源は、電源管理システムによって充電、放電および電力消費管理を実装するように、電源管理システムを介して論理的にプロセッサ880と接続され得る。
【0146】
一実施形態では、携帯電話800は、カメラ、ブルートゥースモジュールなどをさらに含み得る。
【0147】
本開示の実施形態では、携帯電話に含まれるプロセッサは、メモリに格納されたコンピュータプログラムを実行して、上記のメモリを処理するための方法を実装する。
【0148】
本開示で使用されたメモリ、記憶装置、データベースまたは他の媒体へのあらゆる言及は、不揮発性メモリおよび/または揮発性メモリを含み得る。適切な不揮発性メモリは、ROM、プログラム可能ROM(PROM)、電気的プログラム可能ROM(EPROM)、電気的消去可能プログラム可能ROM(EEPROM)、またはフラッシュメモリを含み得る。揮発性メモリは、外部キャッシュメモリとして使用されるRAMを含み得る。限定ではなく例示として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、デュアル・データ・レートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、ラムバスダイレクトRAM(RDRAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM)、およびラムバスダイナミックRAM(RDRAM)などの複数の形態で取得され得る。
【0149】
上記の実施形態は、本開示のいくつかの実装方法を具体的により詳細に説明しているにすぎず、よって、本開示の特許範囲に対する限定と理解することはできない。当業者であれば本開示の概念から逸脱することなくいくつかの変形および改変を行い得ることを指摘しておきたい。それらの変形および改変は本開示の保護範囲内に含まれる。したがって、本開示の保護範囲は添付の特許請求の範囲によって決定されるべきである。