(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムおよびアプリケーションを実行するプロセッサと、該オペレーティングシステムおよびアプリケーションに利用可能なメモリとを有する第１のコンピュータデバイスにおいて低メモリを管理する方法であって、該第１のコンピュータデバイスは、ワイヤレスネットワーク内のモバイルデバイスと電子メッセージを交換するためのインターフェースであり、該方法は、
（ａ）解放されるまで、該アプリケーション用の第１のリザーブバッファおよび第２のリザーブバッファであって、該アプリケーションに利用可能でない第１のリザーブバッファおよび第２のリザーブバッファをメモリブロック内にリザーブするステップと、
（ｂ）該アプリケーションによるメモリの使用量が第１の閾値に達したと決定すると、該アプリケーションによって用いるために該第１のリザーブバッファを解放するステップと、
（ｃ）該メモリの使用量が該第１の閾値に達したと決定した後、第１の警告を生成し、該第１の警告が生成されると、ネットワークを介して該第１のコンピュータデバイスから別のコンピュータデバイスに該第１の警告を送信するステップと、
（ｄ）該第１の警告を検出すると、該第１のコンピュータデバイスから離れて、該第１のコンピュータデバイスと共通のネットワークに接続される少なくとも１つのさらなるコンピュータデバイスへと電子メッセージを再ルーティングするステップと、
（ｅ）該第１のリザーブバッファが解放された後において該アプリケーションによるメモリの使用量が第２の閾値に達したと決定し、その場合、該アプリケーションによって用いるために該第２のリザーブバッファを解放し、第２の警告を発するステップと、
（ｆ）該第２の警告を検出すると、該メモリブロックから選択された情報を永久記憶装置に格納することを含む自動アプリケーションシャットダウンルーチンを開始するステップと
を包含する、方法。
【請求項２】
前記メモリの使用量が前記第１の閾値または前記第２の閾値に達したと決定することに続いて、前記メモリブロックから選択された情報を前記永久記憶装置に格納するステップを包含する、請求項１に記載の方法。
【請求項３】
ステップ（ｂ）において、前記オペレーティングシステムによって前記アプリケーションに関してメモリ不足例外が生成された場合、前記メモリの使用量が前記第１の閾値を超過したという決定がなされ、
ステップ（ｅ）において、前記第１のリザーブバッファが解放されている間に、該オペレーティングシステムによって該アプリケーションに関して第２のメモリ不足例外が生成された場合、該メモリの使用量が前記第２の閾値を超過したという決定がなされる、請求項１に記載の方法。
【請求項４】
前記第２のリザーブバッファのサイズは、前記第１のリザーブバッファのサイズよりも小さい、請求項１に記載の方法。
【請求項５】
ステップ（ｂ）の後、前記アプリケーションによる前記メモリの使用量が第３の閾値未満に低下した場合、前記第１のリザーブバッファを前記メモリブロック内に再リザーブするステップを包含する、請求項１に記載の方法。
【請求項６】
前記第１のコンピュータデバイスは、前記ワイヤレスネットワークを介して前記モバイルデバイスに送信される出力電子メッセージを前記メモリブロックに格納し、
該メモリブロックから選択された情報を前記永久記憶装置に格納することは、該格納された出力電子メッセージのうちの少なくとも一部を該永久記憶装置に格納することを包含する、請求項１に記載の方法。
【請求項７】
前記メモリブロックに格納された前記格納された出力電子メッセージが、選択されたモバイルデバイスを該選択されたモバイルデバイスから送信される電子メッセージの状態に関して不正確または不明瞭な情報を有しているままにしておくのを避けるために該選択されたモバイルデバイスに送信する必要のある重要なメッセージを含み、該格納された出力電子メッセージのうちの少なくとも一部を永久記憶装置に格納するステップは、ワイヤレスモバイルデバイスに送信する必要のある該重要なメッセージを該格納された出力電子メッセージから選択するステップと、該選択された重要なメッセージを該永久記憶装置に格納するように試みるステップとを包含する、請求項６に記載の方法。
【請求項８】
前記メモリブロックが、前記アプリケーションの起動のときに該アプリケーションのために予約され、前記第１および第２のリザーブバッファは、該アプリケーションの起動のときに該メモリブロックにリザーブされる、請求項１に記載の方法。
【請求項９】
第１のコンピュータデバイス上でメモリを管理するシステムであって、該第１のコンピュータデバイスは、ワイヤレスネットワーク内のモバイルデバイスと電子メッセージを交換するためのインターフェースであり、該第１のコンピュータデバイスは、プロセッサと、メモリと、オペレーティングシステムと、アプリケーションとを有し、該システムは、
低メモリマネージャであって、
該低メモリマネージャは、
該低メモリマネージャによって解放されるまで、該アプリケーションに利用可能でない第１のリザーブバッファをメモリブロック内にリザーブし、
該アプリケーションに関して、該オペレーティングシステムによって生成された第１のメモリ不足例外を検出すると、該アプリケーションによる使用のための該第１のリザーブバッファを解放し、
該第１のコンピュータデバイスは、
該ワイヤレスネットワークを介してワイヤレスモバイルデバイスに送信される出力電子メッセージを該メモリに格納し、
該低メモリマネージャは、
該第１のリザーブバッファに加えて、該低メモリマネージャによって解放されるまで、該アプリケーションに利用可能でない第２のリザーブバッファを該メモリブロック内にリザーブし、
該アプリケーションに関して、該オペレーティングシステムによって生成された該第１のメモリ不足例外を検出した後、第１の警告を生成し、
該アプリケーションに関して、該オペレーティングシステムによって生成されたさらなるメモリ不足例外を検出すると、第２の警告を生成し、該アプリケーションによる使用のための該第２のリザーブバッファを解放する
ように構成されている、低メモリマネージャと、
該第２の警告の検出に続いて、該メモリブロックから該格納された出力電子メッセージデータのうちの少なくとも一部を永久記憶装置に格納するシャットダウンマネージャと、
ネットワークを介して該第１の警告を受信する別のコンピュータデバイスであって、該第１のコンピュータデバイスから離れて、該第１のコンピュータデバイスと共通のネットワークに接続される少なくとも１つのさらなるコンピュータデバイスへと電子メッセージを再ルーティングする別のコンピュータデバイスと
を備える、システム。
【請求項１０】
前記さらなるメモリ不足例外が生成されたときに、前記第１のリザーブバッファがまだ解放されている場合にのみ、前記第２のリザーブバッファが解放される、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の背景）
本発明は、コンピューティングデバイスにおけるメモリマネージメントに関する。
【背景技術】
【０００２】
当該分野にて公知のように、ＭｉｃｒｏｓｏｆｔＴＭ  Ｗｉｎｄｏｗｓ（登録商標）およびＵＮＩＸ（登録商標）ベースのシステム等のオペレーティングシステムは、アプリケーションによって用いられ得るアドレス可能メモリの量を物理的に制限する。アプリケーションがこの限度を超過した場合、これはクラッシュすることが多く、永久メモリに格納されなかったデータの損失、および、おそらく、クラッシュしたアプリケーションに依存する任意の他のアプリケーションにおけるクラッシュまたはスローダウンに至る。共通のネットワーク実行作業領域に別個のコンピュータが並行に接続される分散コンピューティングネットワークにおいて、あるコンピュータが、それ自体のメモリの使用量、または他のコンピュータのメモリの使用量をモニタリングし、１つのコンピュータのモニタリングされた状態が、アプリケーションクラッシュが起こったか、または起こりそうな状態を示す場合に、自動的にか、または、人間のオペレータに警告した後でバックアップ措置をとるように構成され得る。しかしながら、このようなシステムは、問題を適宜検出するために、モニタリングされるコンピュータのほぼ一定に近いポーリングを要求し、かつ、適宜検出された場合でも、重要なデータが保存され得る前に、当該のコンピュータアプリケーションがクラッシュすることがある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のシステムでは、問題を適宜検出するために、モニタリングされるコンピュータのほぼ一定に近いポーリングを要求し、かつ、適宜検出された場合でも、重要なデータが保存され得る前に、当該のコンピュータアプリケーションがクラッシュすることがあった。
【０００４】
従って、状態を修正するか、または、そうでない場合、応答する時間を提供する低メモリ状態を検出および管理する方法およびシステムが必要とされる。
【課題を解決するための手段】
【０００５】
（発明の要旨）
本発明は、アプリケーションがクラッシュする前に、修正動作または対応措置をとり得るために十分早期に、メモリ問題が近い将来に起こりそうなことを警告し得る新規の方法を提供する。
【０００６】
本発明のある局面によると、オペレーティングシステムおよびアプリケーションを実行するプロセッサと、オペレーティングシステムおよびアプリケーションに利用可能なメモリとを有する第１のコンピュータデバイスにおいて低メモリを管理する方法が提供され、この方法は、（ａ）解放されるまで、アプリケーションに利用可能でない第１のリザーブバッファを、アプリケーションの起動時に、オペレーティングシステムによってアプリケーションに割り当てられたメモリブロック内にリザーブするステップと、（ｂ）アプリケーションによるメモリの使用量が閾値に達したと判断すると、アプリケーションによる使用のための第１のリザーブバッファを解放するステップとを包含する。
【０００７】
本発明の別の局面によると、プロセッサと、メモリと、オペレーティングシステムと、アプリケーションとを有するコンピュータデバイス上で低メモリを管理するシステムが提供され、このシステムは、（ａ）低メモリマネージャによって解放されるまで、アプリケーションに利用可能でない第１および第２のリザーブバッファを、アプリケーション用のオペレーティングシステムによって割り当てられたメモリブロック内にリザーブし、（ｂ）アプリケーションに関して、オペレーティングシステムによって生成された第１のメモリ不足例外を検出すると、アプリケーションによる使用のための第１のリザーブバッファを解放し、（ｃ）アプリケーションに関して、オペレーティングシステムによってアプリケーションに関して生成されたさらなるメモリ不足例外を検出すると、アプリケーションによって使用するための第２のリザーブバッファを解放するための低メモリマネージャを備える。
【０００８】
本発明の他の局面および特徴は、本発明の特定の実施形態に関する以下の記載を添付の図と共に精査することによって当業者に明らかになる。
【０００９】
同じコンポーネントまたは特徴を示すために、異なった図において同じ参照符号が用いられる。
【００１０】
本発明の方法は、オペレーティングシステムおよびアプリケーションを実行するプロセッサと、該オペレーティングシステムおよびアプリケーションに利用可能なメモリとを有する第１のコンピュータデバイスにおいて低メモリを管理する方法であって、該方法は、（ａ）解放されるまで、該アプリケーションに利用可能でない該第１のリザーブバッファを該メモリブロック内にリザーブするステップと、（ｂ）該アプリケーションによるメモリの使用量が閾値に達したと判断すると、該アプリケーションによって用いるために該第１のリザーブバッファを解放するステップとを包含し、それにより上記目的が達成される。
【００１１】
前記メモリの使用量が前記閾値に達したと判断すると、警告を生成するステップを包含してもよい。
【００１２】
前記メモリの使用量が前記閾値に達したと判断すると、警告信号を生成するステップと、該警告信号を、ネットワークを介して前記第１のコンピュータデバイスから別のコンピュータデバイスに送信するステップとを包含してもよい。
【００１３】
前記警告信号を検出すると、前記第１のコンピュータデバイスとしての、共通のネットワークに接続される少なくとも１つのさらなるコンピュータデバイスに指示して、該第１のコンピュータデバイスによって前に実行された少なくともいくつかの負荷ステップを包含してもよい。
【００１４】
前記メモリの使用量が前記閾値に達したと判断すると、それに続いて、前記メモリブロックから選択された情報を永久記憶装置に格納するステップを包含してもよい。
【００１５】
前記オペレーティングシステムによって、アプリケーションに関してメモリ不足例外が生成された場合、メモリの使用量が前記閾値に達したと判断してもよい。
【００１６】
ステップ（ａ）は、解放されるまで、前記アプリケーションに利用可能でない前記第２の該リザーブバッファを前記メモリブロック内にリザーブするステップをさらに包含し、（ｃ）前記第１のリザーブバッファが解放された後に、該アプリケーションによるメモリの使用量が別の閾値を超過したかどうかを判断し、超過した場合、該アプリケーションによる使用のために該第２のリザーブバッファを解放するステップをさらに包含してもよい。
【００１７】
前記第１のリザーブバッファの解放とともに、第１の警告信号を生成し、かつ、前記第２のリザーブバッファの解放とともに第２の警告信号を生成するステップを包含してもよい。
【００１８】
前記第１のコンピュータデバイスとしての、共通のネットワークに接続される少なくとも１つのさらなるコンピュータデバイスに指示して、該第１のコンピュータデバイスによって前に実行された少なくともいくつかの負荷を担わせ、前記第２のリザーブバッファの解放と共に、自動化されたアプリケーションシャットダウンルーチンを開始するステップを包含してもよい。
【００１９】
ステップ（ｂ）において、前記オペレーティングシステムによって、アプリケーションに関してメモリ不足例外が生成された場合、メモリの使用量が前記閾値を超過したという決定が下され、ステップ（ｃ）において、該第１のリザーブバッファが解放されている間に該オペレーティングシステムによって、アプリケーションに関して第２のメモリ不足例外が生成された場合、該メモリの使用量が該閾値を超過したと判断してもよい。
【００２０】
前記第２のリザーブバッファのサイズは、前記第１のリザーブバッファのサイズよりも小さくてもよい。
【００２１】
ステップ（ｂ）の後、前記アプリケーションによる前記メモリの使用量が閾値未満に低下した場合、前記第１のリザーブバッファを前記メモリブロック内に再リザーブするステップを包含してもよい。
【００２２】
本発明のシステムは、プロセッサと、メモリと、オペレーティングシステムと、アプリケーションとを有するコンピュータデバイス上で低メモリを管理するシステムであって、該システムは、（ａ）解放されるまで、該アプリケーションに利用可能でない第１および第２のリザーブバッファをメモリブロック内にリザーブするステップ、（ｂ）該アプリケーションに関して、該オペレーティングシステムによって生成された第１のメモリ不足例外を検出すると、該アプリケーションによる使用のための該第１のリザーブバッファを解放するステップ、および、（ｃ）該アプリケーションに関して、該オペレーティングシステムによって生成されたさらなるメモリ不足例外を検出すると、該アプリケーションによる使用のための該第２のリザーブバッファを解放するステップのための低メモリマネージャを備え、それにより上記目的が達成される。
【００２３】
ステップ（ｃ）において、前記さらなるメモリ不足例外が生成されたときに、前記第１のリザーブバッファがまだ解放されている場合にのみ、前記第２のリザーブバッファが解放されてもよい。
【００２４】
前記低メモリマネージャは、前記第１のリザーブバッファおよび前記第２のリザーブバッファの解放によって、警告信号を生成するように構成されてもよい。
【００２５】
前記第２のリザーブバッファの解放に続いて、前記メモリブロックから少なくともいくつかのデータを永久記憶装置に格納するシャットダウンマネージャを備えてもよい。
【発明の効果】
【００２６】
本発明により、アプリケーションがクラッシュする前に、修正動作または対応措置をとり得るために十分早期に、メモリ問題が近い将来に起こりそうなことを警告し得る新規の方法およびシステムを提供することができる。
【発明を実施するための最良の形態】
【００２７】
（詳細な説明）
本発明の実施形態の以下の詳細な記載は、本発明の実現を特定のコンピュータオペレーティングシステム（ＯＳ）に限定しない。本発明は、本発明の要件をサポートする設備を提供する任意のＯＳで実現され得る。ある実施形態は、ＭｉｃｒｏｓｏｆｔＴＭ  Ｗｉｎｄｏｗｓ（登録商標）  ＸＰＴＭオペレーティングシステムを用いて実現されるが、本発明は、例えば、ＵＮＩＸ（登録商標）等の他のオペレーティングシステムでも実現され得る。
【００２８】
図を参照して、図１は、本発明が実現され得るネットワークコンピュータシステムを備える通信システムのブロック図である。示されるネットワークコンピュータシステムは、ルータであり、より具体的には、１つ以上のクライアントネットワーク１１０と１つ以上のワイヤレスネットワーク１０４との間で中間体（ｉｎｔｅｒｍｅｄｉａｒｙ）およびインタープリタとして機能し、ワイヤレスネットワーク１０４内のモバイルデバイス１０６とクライアントネットワーク１１０に接続されたデバイスとの間でｅメールメッセージが交換されることを可能にするワイヤレスゲートウェイ１００である。しかしながら、本発明は、ルータまたはワイヤレスゲートウェイでの実現に限定されず、そのより広い局面において、多様なコンピュータシステムで実現され得る。
【００２９】
クライアントネットワーク１１０は、ワイヤレスゲートウェイ１００からリモートでロケートされることが多く、１つ以上の通信リンクを介してワイヤレスゲートウェイ１００と通信する。クライアントネットワーク１１０は、通常、ゲートウェイ１００とのｅメール通信を処理するためのクライアント側のインターフェースを含む。ｅメールメッセージは、当該技術にて公知のように、特に、プレーンテキストメッセージ、ＨＴＭＬメッセージ、および多様なタイプの添付ファイルを含む。
【００３０】
ワイヤレスゲートウェイ１００は、１つ以上のクライアントネットワーク１１０とワイヤレスネットワーク１０４との間で変換（ｔｒａｎｓｌａｔｉｏｎ）およびルーティングサービスを提供し、モバイルデバイス１０６と、クライアントネットワーク１１０に直接または間接的に接続されたデバイスとの間でのｅメール通信を容易にする。ワイヤレスゲートウェイ１００は、特に、クライアントネットワークインターフェース（ＣＮＩ）１２０１〜１２０Ｍ、少なくとも１つのコントローラ１２２、データベース（ＤＢ）１２４、およびワイヤレストランスポートインターフェース（ＷＴＩ）１２８１〜１２８Ｍを含むいくつかの分散コンポーネントを備える。必要に応じて、増加したキャパシティおよびバックアップリダンダンシーを提供するために、コンポーネントは、各々、好ましくは、ネットワーク１１８（専用のＬＡＮであり得る）によって接続された専用のデジタルコンピュータを用いて実現される。当該技術にて公知のように、デジタルコンピュータコンポーネントは、各々、特に、マイクロプロセッサ１３０、ＲＡＭ１３２等の非常駐メモリ、フラッシュメモリおよび／またはハードドライブ（ＨＤ）１３４といった、通常、永久的に書き込み可能であるメモリ、ならびにネットワーク通信インターフェースカード（図示せず）を備える。あるコンポーネント、例えば、ワイヤレストランスポートインターフェース１２８ｋ（ここで、１≦ｋ≦Ｍ）がクラッシュするか、または、そうでない場合、利用可能でなくなると、ワイヤレスゲートウェイ１００における別の１つ以上のワイヤレストランスポートインターフェース１２８１〜１２８Ｍが不良のワイヤレストランスポートインターフェースによって前に処理されたトラフィックをピックアップし得る。
【００３１】
図１のゲートウェイ１００において、クライアントネットワークインターフェース（ＣＮＩ）１２０は、各々、ワイヤレスゲートウェイ１００と少なくとも１つのクライアントネットワーク１１０との間の接続を管理するように構成される。ある実施形態において、クライアントネットワークインターフェース（ＣＮＩ）１２０は、クライアントネットワーク１１０における１つ以上のクライアント側インターフェースとの接続（ｏｐｅｎ  ｃｏｎｎｅｃｔｉｏｎ）を維持し、所定のプロトコルを用いてこれと通信する。
【００３２】
ワイヤレスゲートウェイ１００のデータベース１２４は、管理、トラッキング、およびメッセージ回復の目的で、ワイヤレスゲートウェイの他のコンポーネントによって用いられるデータを格納し、この点で、ワイヤレスゲートウェイ１００の複数のコンポーネントは、データベース１２４に書き込み、およびこれから読み出しするように構成される。特に、データベースは、ワイヤレスゲートウェイコンポーネントに関するコンフィギュレーション情報を格納し、ワイヤレスゲートウェイの現在のステータスおよび状態に関するデータを保持し、ワイヤレスゲートウェイ１００と通信するモバイルデバイス１０６に関する情報（ＩＤ番号および最後に知られたロケーション）を格納し、選択されたメッセージに関する情報を格納する。データベース１２４によって格納された情報は、事故／エラーの回復を支援し、バックアップコンポーネントが不良のコンポーネントの機能を引き受けることを可能にし得る。ある可能な実施形態において、データベース１２４は、ＯｒａｃｌｅＴＭデータベースであり、ワイヤレスゲートウェイコンポーネントは、これらのコンポーネントがデータベースに書き込み、およびデータベースから読み出しすることを可能にするＯｒａｃｌｅＴＭクライアントを動作させる。
【００３３】
ワイヤレスゲートウェイ１００は、ゲートウェイの動作を制御および調整するために、コントローラ１２２の形態の少なくとも１つのコントローラと、好ましくは、バックアップコントローラも備える。特に、コントローラ１２２は、コントローラがデータベース１２４に格納する現在の状態情報に関するコンポーネントを周期的にポーリングすることによってゲートウェイ１００のコンポーネントの動作をモニタリングする。コントローラ１２２は、ワイヤレスゲートウェイ内のコンポーネントの障害または保留中の障害を検出し、不良のコンポーネントの機能を引き受ける他のコンポーネントを調整するように構成される。
【００３４】
ワイヤレストランスポートインターフェース（ＷＴＩ）１２８は、ワイヤレスゲートウェイのモバイルデバイス１０６とのインターフェースであり、モバイルデバイス向けのメッセージをパケットシーケンスにアセンブルし、そのフォーマットは、特定のワイヤレスネットワーク１０４に依存する。同様に、ワイヤレストランスポートインターフェース（ＷＴＩ）１２８は、モバイルデバイスから送信されたパケットシーケンスからモバイルデバイスからのメッセージを組み立てる。
【００３５】
ワイヤレストランスポートインターフェース１２８は、通常、１つ以上のワイヤレスネットワークインターフェースアダプタ１２９を通じてワイヤレスネットワーク１０４と通信する。ある実施形態において、ワイヤレスネットワークインターフェースアダプタは、ワイヤレストランスポートインターフェース１２８へのＴＣＰ／ＩＰ接続と、ワイヤレスネットワーク１０４へのＸ．２５プロトコル接続とを有し、これにより、ワイヤレスネットワークインターフェースアダプタは、ワイヤレストランスポートインターフェース１２８からの（これへの）パケットをＸ．２５モバイルネットワーク接続へのＴＣＰ／ＩＰ接続を介してルーティングする。
【００３６】
モバイルネットワーク１０４は、モバイルデバイス１０６に無線有効範囲（ｒａｄｉｏ  ｃｏｖｅｒａｇｅ）を提供し、かつ、例えば、Ｍｏｂｉｔｅｘ  Ｒａｄｉｏ  Ｎｅｔｗｏｒｋ、ＤａｔａＴＡＣ、またはＧＰＲＳ、ＣＤＭＡまたはｉＤＥＮネットワークを含む複数の異なったタイプのネットワークである得る。モバイルデバイス１０６は、ハンドヘルドであるか、または、ｅメールメッセージを送受信するように構成された他のモバイルデジタルコンピューティングデバイスであり得る。
【００３７】
本発明は、ゲートウェイ１００にて用いられる特定のプロトコルまたは方式に依存せず、クライアントネットワーク１１０とワイヤレスネットワーク１０４との間でメッセージを交換する。むしろ、本発明は、１つ以上か、またはゲートウェイ１００等のネットワークを実現するために用いられるコンピュータのメモリマネージメントの局面に関する。
【００３８】
図２は、一般的に参照符号１４０で示されるソフトウェアコンポーネントを表すブロック図を示す。これらのソフトウェアコンポーネントは、マイクロプロセッサ１３０によって実行するために、ワイヤレストランスポートインターフェース（ＷＴＩ）１２８、クライアントネットワークインターフェース（ＣＮＩ）、コントローラ１２２、およびゲートウェイ１００のデータベース１２４等の少なくともいくつかのコンポーネント上に常駐するか、またはこれにアクセス可能である。ソフトウェアコンポーネントは、上述のように、ある実施形態におけるオペレーティングシステムのＭｉｃｒｏｓｏｆｔＴＭ  Ｗｉｎｄｏｗｓ（登録商標）系列のものであるオペレーティングシステム（ＯＳ）１４２および専用アプリケーション１４４１〜１４４Ｎを備える。専用アプリケーション１４４１〜１４４Ｎは、それぞれのゲートウェイコンポーネントの各々によって必要とされるアプリケーションであり、これにより、コンポーネントは、それぞれの機能を実行し得る。ゲートウェイのコンポーネントの各々に配置されるか、利用可能でもある専用アプリケーションの特定の組み合わせ（ｍｉｘ）は、通常、そのコンポーネントによって実行される機能に依存する。
【００３９】
当業者に公知のように、ＯＳ１４２は、専用アプリケーション１４４１〜１４４Ｎの動作を調整およびモニタリングし、かつ、専用アプリケーションの各々についてリソースを割り当てるように構成される。ＯＳ１４２が専用アプリケーション間に割り当てる最も重要なリソースの１つは、非常駐メモリ、すなわち、ＲＡＭ１３２である。図３は、メモリブロック１５０を線図で示す。これは、オペレーティングシステム１４２が専用アプリケーション１４４１〜１４４Ｎ間に割り当て得るＲＡＭ１３２の部分を表す。通常、アプリケーションを起動すると、オペレーティングシステムは、サブセットまたはメモリブロック１５０をアプリケーションのために予約するか、または割り当てる。図３において、１５２１〜１５２Ｎは、専用アプリケーション１４４１〜１４４Ｎにそれぞれ割り当てられたメモリブロックを表す。当該技術にて公知のように、各メモリブロック１５２を実現するために用いられる物理メモリは、ＲＡＭ１３２において連続した物理メモリロケーションを必要とせず、連続的データ群は、連続的物理メモリロケーションに格納される必要がない。
【００４０】
本発明によると、ソフトウェアコンポーネント１４０は、低メモリ状態、すなわち、低メモリマネージャアプリケーション１４６を管理するための専用アプリケーションを備える。図２に別個のアプリケーションとして示されるが、低メモリマネージャ１４６の機能は、いくつかの実施形態において、１つ以上の他の専用アプリケーション１４４１〜１４４Ｎ、または、オペレーティングシステム１４２に完全に、または部分的に組み込まれてもよい。低メモリマネージャ１４６は、すべてまたは選択された専用アプリケーション１４４１〜１４４Ｎに割り当てられたメモリの部分が効果的にリザーブに保持されるように構成され、これにより、このメモリの部分は、低メモリが生じる間に専用アプリケーションをサポートするために用いられ得、従って、当該のアプリケーションがクラッシュする前に、データバックアップまたは対応措置をとるための時間を提供する。
【００４１】
図４は、本発明の実施形態により、一般に参照符号４００によって示され、専用アプリケーション１４４ｉ（ただし、１≦ｉ≦Ｎ）の低メモリ状態を管理するために低メモリマネージャ１４６によって行われるプロセスを示す。ステップ４０２に示されるように、低メモリマネージャが単独のアプリケーションか、またはオペレーティングシステムに組み込まれた実施形態において、低メモリマネージャは、オペレーティングシステム１４２によって開始されたすべての専用アプリケーションをモニタリングし、かつ、開始されている専用アプリケーション（この例において、アプリケーション１４４ｉ）が低メモリのために事前選択されているかどうかを決定し、事前選択されている場合、後述されるメモリマネージメント機能を実行する。いくつかの実施形態において、低メモリマネージメントのためのすべての専用アプリケーションが選択され得、この場合、ステップ４０２が省略され得る。いくつかの実施形態において、低メモリマネージャ１４６は、専用アプリケーション１４４ｉのモジュールであり得、そのメモリマネージメントステップを関連した専用アプリケーション１４４ｉに関してのみ自動的に実行するように構成され得る。
【００４２】
低メモリマネージメントが専用アプリケーション１４４ｉに関して実行される場合、ステップ４０４に示されるように、低メモリマネージャ１４６は、オペレーティングシステムが専用アプリケーション１４４ｉにリザーブメモリブロックを割り当てるように指示する。上述のように、オペレーティングシステム１４２は、最初に、専用アプリケーション１４４ｉを開始し、これは、メモリブロック１５２ｉ（図３）をアプリケーションのために予約または割り当てる。Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムの実施形態において、メモリブロックは２ＧＢであり得、これは、Ｗｉｎｄｏｗｓ（登録商標）が現在アプリケーションに割り当てることができる最大量のメモリである。本発明の実施形態によると、ステップ４０４において、低メモリマネージャ１４６は、メモリブロック１５２ｉ内に２つのリザーブサブブロックを予約または割り当てることをオペレーティングシステムにリクエストし、これにより、このサブブロックは、３つのサブブロック、すなわち、メインブロック１５８と、２つのリザーブバッファＢ１  １５４およびＢ２  １５６とに分解される。メインブロック１５８は、専用アプリケーション１４４ｉの通常の動作要件に対して完全に利用可能にされるが、オペレーティングシステム１４２および専用アプリケーション１４４ｉの両方の観点から、２つのリザーブバッファＢ１  １５４およびＢ２  １５６が予約され、低メモリマネージャ１４６によって空けられるまで利用可能でない（後述される）。当該技術に公知のように、オペレーティングシステム１４２は、通常、メモリを所定のサイズの「ページ」に分割する。低メモリマネージャ１４６は、専用のアプリケーション１４４ｉが起動すると、リザーブバッファＢ１  １５４およびＢ２  １５６を予約するが、リザーブバッファは、ある実施形態において、データが実際にこれらに書き込まれるまで、実際にオペレーティングシステムによってメモリページに物理的に分割されず、これにより、不必要なプロセッサアクティビティを低減する。
【００４３】
ある実施形態において、リザーブバッファＢ１  １５４およびＢ２  １５６は、メインブロック１５８と比較して比較的小さく、第２のリザーブバッファＢ２  １５６は、第１のバッファＢ１  １５４よりも小さい。非限定的例として、ある実施形態において、メインブロック１５８は、アプリケーション１４４ｉに割り当てられたメモリブロック１５２ｉの約８８％であり、第１のリザーブバッファＢ１  １５４は、メモリブロック１５２ｉの約１０％であり、第２のリザーブバッファＢ２  １５６は、メモリブロック１５２ｉの約２％であり得る。しかしながら、種々の実施形態において、異なった相対的バッファサイズが用いられ、いくつかの実施形態において、第１のリザーブバッファと第２のリザーブバッファのサイズは同じである。
【００４４】
専用アプリケーション１４４ｉが動作すると、このアプリケーションは、そのメモリ要件のためにメインメモリブロック１５８を用いる。アプリケーション１４４ｉおよびオペレーティングシステム１４２は、ハードドライブ１３４へのキャッシングデータ等のメインブロック１５８内のメモリの使用量を管理するために、当該分野にて公知の種々のメモリマネージメント技術を用い得る。
【００４５】
当該分野に公知のように、動作システム１４２は、専用アプリケーション１４４ｉのメモリ使用をモニタリングし、かつ、専用アプリケーション１４４ｉのため利用可能なメモリが所定の閾値（ゼロ利用可能メモリであり得る）未満になった場合であってもメモリ不足例外を発するように構成される。複数の専用アプリケーションにおいて、メモリ不足の例外は、修正動作または対応措置が実行されることを十分に警告することなく、専用アプリケーションを直ちにか、またはほぼ直ちにクラッシュさせる。本発明の低メモリマネージャ１４６は、近い将来起こり得るメモリ不足問題についての警告が、アプリケーションがクラッシュする前に、十分早期に提供され得る新規の方法を提供する。
【００４６】
より具体的には、ステップ４０６に示されるように、低メモリマネージャ１４６は、専用アプリケーション１４４ｉが動作している間、専用アプリケーション１４４ｉに関してオペレーティングシステム１４２によって発せられた任意のメモリ不足例外を検出するように構成される。メモリ不足例外は、メインブロック１５８において利用可能なメモリが動作システム閾値未満に低下した場合に起こる。ステップ４０８に示されるように、専用アプリケーション１４４ｉに関して、オペレーティングシステムによって発せられるメモリ不足例外を検出すると、低メモリマネージャ１４６は、オペレーティングシステム１４２が第１のリザーブバッファＢ１  １５４を解放して、バッファＢ１のメモリをメインブロック１５８と効果的に統合するように指示し、これにより、専用アプリケーション１４４ｉおよびオペレーティングシステム１４２の観点から、専用アプリケーションによって用いるために利用可能な空きメモリの量を増加させる。新たに空きになったメモリは、近い将来に起こり得るクラッシュ全体を回避しない場合、遅延することが多い。
【００４７】
メモリを空きにすることに加えて、低メモリマネージャは、ステップ４１０に示されるように、第１の警告警報を発し、これにより、修正動作または対応措置がとられ得る。いくつかの実施形態において、第１の警告警報は、人間のオペレータに状態を警報するように意図されるオーディオおよび／またはビジュアル信号であり得る。追加的、または、代替的に、警告警報は、関連したコンピュータ上で動作するマネージメントアプリケーションに渡される電気信号または変数であり得る。マネージメントアプリケーションは、ディスクリート専用アプリケーションであり得るか、あるいは、関連した専用アプリケーションのモジュールか、または低メモリマネージャ１４６のモジュールであり得る。いくつかの実施形態において、警告信号は、関連したコンピュータがネットワークによって接続されるリモートコンピュータ上で動作するマネージメントアプリケーションに送信され得る。例えば、低メモリマネージャ１４６が分散ゲートウェイ１００のワイヤレストランスポートインターフェース１２８ｋ上で動作する実装例において、警告警報信号は、コントローラ１２２上で動作するマネージメントアプリケーションに送信し得る。これは、その後、問題を調査するために人間のオペレータに警報を発し得る。コントローラ１２２上のマネージメントアプリケーションは、自動的に、または人間のオペレータの介入によって、修正動作をとるように構成され得る。例えば、コントローラ１２２上のマネージメントアプリケーションは、電子トラフィックが他のワイヤレストランスポートインターフェース１２８に再ルーティングされるようにして、関連したワイヤレストランスポートインターフェースに対する要求をいくらか軽減するように構成される。いくつかの実施形態において、第１の警告信号の後で、メモリ１５２ｉ内の情報を永久記憶装置に格納するステップが行われ得る。
【００４８】
再びプロセス４００を参照して、一旦リザーブバッファＢ１  １５４が解放されると、低メモリマネージャ１４６が、オペレーティングシステム１４２が、専用アプリケーション１４４ｉに関して第２のメモリ不足例外を発するかどうかを見る（ステップ４１２）。第２のメモリ不足例外を待つ間、専用アプリケーションは、第１のリザーブバッファＢ１  １５４を再リザーブすることを周期的に試み（ステップ４１４）、専用アプリケーション１４４ｉによるメモリ使用レベルがリザーブバッファＢ１  １５４をもはや必要としないレベルに低下した場合、オペレーティングシステム１４２は、メモリが低メモリマネージャ１４６によってリザーブされることを可能にし、そうでない場合、オペレーティングシステム１４２は、メモリの低メモリマネージャへの解放が可能にならない。低メモリマネージャによって第１のバッファＢ１を再リザーブする試みの頻度は、本発明のある実施形態において構成可能である。ステップ４１４において、リザーブバッファＢ１  １５４がもはや必要とされず、低メモリマネージャによって再リザーブされた場合、低メモリマネージャはリセットし、かつステップ４０６に戻り、新規の第１のメモリ不足例外の出現を待つ。
【００４９】
再びステップ４１２を参照して、オペレーティングシステム１４２は、リザーブバッファＢ１  １５４の解放に基づいて、利用可能になったさらなるメモリが使い果たされた場合、さらなるメモリ不足例外を発する。第２のメモリ不足例外の出現は、通常、第１の警告警報に応答してとられた任意の修正動作が失敗したか、または、第１の警告警報が聞き入れられなかったことを示す。
【００５０】
ステップ４１６において示されるように、第２のメモリ不足例外に応答して、低メモリマネージャ１４６は、第２のリザーブバッファＢ２  １５６を解放し、バッファＢ２のメモリをメインブロック１５８および前に解放された第１のリザーブバッファＢ１  １５４と有効に統合し、これにより、専用アプリケーション１４４ｉおよびオペレーティングシステム１４２の観点から、専用アプリケーションによって用いるために利用可能な空きメモリの量を増加させる。新規に解放されたメモリは、好ましくは、回復をサポートする措置を関連したアプリケーションがクラッシュする前に行うために十分な時間（例えば、メモリブロック１５２ｉにおける選択された情報が永久記憶装置ロケーションに格納され、これにより、これが後から取り出され得るための時間）を獲得する。
【００５１】
ステップ４１８に示されるように、第２のリザーブバッファを解放すると、低メモリマネージャは、好ましくは、クラッシュが近い将来に起こり得るという合図の第２の警告警報を発する。いくつかの実施形態において、第２の警告警報は、専用アプリケーション１４４ｉのシャットダウンを開始させる事実上のコマンドである。好ましくは、第２の警告警報は、回復をサポートする措置を開始させる。いくつかの実施形態において、第２の警告警報は、別のアプリケーションに渡されるか、または、関連したアプリケーションと同じコンピュータに配置されるアプリケーション内の信号または変数であり得る。代替的、または、追加的に、第２の警告警報は、別のコンピュータ上にリモートで配置されたマネージメントアプリケーションに送信され得る。
【００５２】
非限定的例として、関連した専用アプリケーション１４４ｉは、ワイヤレストランスポートインターフェース１２８ｋ上で動作し、出力メッセージを送信して、モバイルデバイス１０６から入来するメッセージを受信することを担い得る。専用アプリケーションは、モバイルデバイス１０６に送信されることを待つ、待機状態の出力メッセージと、モバイルデバイス１０６から受信されたが、まだゲートウェイ１００によって処理されていない待機状態の入来するメッセージとを含むメモリブロック１５２ｉ内に待機状態メッセージバッファを維持する。待機状態メッセージは、特に、エラーコードおよび承認等の状態メッセージを含み得る。待機状態メッセージバッファ内におけるいくつかの待機状態メッセージの送達は、「失われた」メッセージ、すなわち、ｅメールメッセージの状態に関して、不正確または不明瞭な情報とともに残される、モバイルデバイス１０６等の発信するデバイスからのメッセージを回避するために重要であり得る。従って、専用アプリケーション１４４ｉの障害となるクラッシュの場合、最終的に、失われたメッセージを回避するために送信されることが必要とされるメモリブロック１５２ｉ内の少なくとも重要な待機状態メッセージを永久記憶装置にシリアル化することが望ましい。
【００５３】
現在記載される例において、専用アプリケーション１４４ｉは、ステップ４１８において発せられた第２の警告警報を受信し、シャットダウンルーチンを開始するように構成されるシャットダウンマネージャ１６０を備える。このシャットダウンルーチンは、特に、メモリブロック１５２ｉに格納された任意の重要なメッセージを永久記憶装置にシリアル化して、これにより、重要な待機状態メッセージが、後から取り出され、かつ送信されることを可能にすることを包含する。メッセージは、関連したアプリケーションが動作するコンピュータの局所的永久記憶装置か、またはデータベース１２４にシリアル化され得る。ステップ４１８において発せられる第２の警告警報は、好ましくは、さらに、直接的または間接的にコントローラ１３２に提供され、これにより、この警告警報は、すべてのトラフィックがクラッシングアプリケーション１４４ｉを動作させるワイヤレストランスポートインターフェース１２８ｋから離れて再ルーティングされるようにし、かつ、１つ以上の他のワイヤレストランスポートインターフェースがトラフィックを引き取り、さらに、シリアル化された重要なメッセージを取り出し、かつ送信するように指定するようにし得る。
【００５４】
従って、本発明の低メモリマネージメントプロセスは、メモリ不足状態に基づいて、アプリケーションの近い将来に起こり得るクラッシュについて事前の警告を提供し、従って、クラッシュを防止する修正動作がとられ、さらに、回復サポート措置がとられ、これにより、クラッシュが起きても重要なデータは失われないことを可能にする。上述の例示的実施形態において、２つのリザーブバッファは、アプリケーションに利用可能なメモリからリザーブされる。メモリ不足例外が発せられた場合、第１のリザーブバッファが解放され、警告が発せられ、これにより、自動化されたか、または、人間によって制御される、あるいは、これらの両方の調査および修正動作が行われ得る。警告が首尾よく修復をもたらさなかった場合、第２のメモリ不足例外が受信され、第２のバッファの解放、および、重要なデータが永久メモリに格納されるアプリケーションの制御されたシャットダウンの開始を引き起こす。低メモリマネージャ１４６は、モニタメモリの使用量それ自体を直接および連続的にモニタリングすることを試みるのではなく、オペレーティングシステム１４２によって発せられるメモリ不足例外に依存する。その結果、低メモリマネージャ１４６は、これが実装されるコンピュータの比較的少ない処理リソースを用いる。
【００５５】
いくつかの実施形態において、ほぼ２つのリザーブバッファが用いられ得る。
【００５６】
ある実施形態において、上述の発明の実施形態を実現するためのコンピュータ実行可能命令を具体的に具現化するコンピュータ読み出し可能媒体を有するコンピュータプログラム製品が提供される。コンピュータ読み出し可能媒体は、特に、磁気媒体または光媒体等の格納媒体であり得るか、あるいは、コンピュータ実行可能命令が変調された電気信号か、または光信号等の通信媒体であり得る。
【００５７】
本発明の上述の実施形態は、例示にすぎないことが意図される。変更、改変および変形は、添付の請求項によって定義される本発明の範囲から逸脱することなく、当業者によって特定の実施形態に対して行われ得る。
【００５８】
低メモリマネージャは、専用アプリケーションに割り当てられるメモリの一部分がリザーブされるように構成され、これにより、この部分は、低メモリが発生する間、専用アプリケーションをサポートするために用いられ得、従って、関連した当該のアプリケーションクラッシュの前にデータバックアップまたは対応ステップを実行する時間を提供する。
【図面の簡単な説明】
【００５９】
【図１】図１は、本発明の実施形態により本発明が実現されるコンピュータネットワークを備える通信システムを示すブロック図である。
【図２】図２は、図１のコンピュータネットワークのコンピュータ上に実現されるソフトウェアコンポーネントを表すブロック図である。
【図３】図３は、本発明の実施形態によるメモリを表すブロック図である。
【図４】図４は、本発明の実施形態によるメモリ管理プロセスの動作を示すフローチャートである。
【図１】
0004642389.tif 000002
【図２】
0004642389.tif 000003
【図３】
0004642389.tif 000004
【図４】
0004642389.tif 000005