"バーチャルマシン内でコンパイルされたメソッドの実行の頻度を決定する方法であって、コンパイルされたメソッドが実行されるとき、該コンパイルされたメソッドに対応するコンパイルされたフラグをセットすることにより、該コンパイルされたメソッドが実行していることを示すことと、該フラグを定期的にスキャンし、該フラグがセットされているとき、対応するカウンターの値を増加させて、それから、該フラグをリセットすることと、該カウンターの該値を解析することによって、該コンパイルされたメソッドの実行の頻度を決定することとを包含する、方法。前記カウンターの増加の間の時間間隔を調整することをさらに包含する、請求項1に記載の方法。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッドが、第2のコンパイルされたメソッドを呼び出すとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項1に記載の方法。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッドが、第2のコンパイルされたメソッドによって呼び出されるとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項1に記載の方法。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッドから第2のコンパイルされたメソッドへ戻るとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項1に記載の方法。前記コンパイルされたメソッドが実行されるとき、決定することは、第2のコンパイルされたメソッドから該コンパイルされたメソッドへ戻るとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項1に記載の方法。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッド内でバックワードブランチを開始するとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項1に記載の方法。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッド内でバックワードブランチに対してターゲットで、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項1に記載の方法。前記コンパイルされたメソッドの実行の頻度が、所定のしきい値を下回るとき、該コンパイルされたメソッドをイヴィクトし、その結果、前記方法は、該コンパイルされたメソッドが再び実行されるとき、続いてリコンパイルもしくはインタープリットされなければならないことをさらに包含する、請求項1に記載の方法。所定のしきい値を調整することにより、前記コンパイルされたメソッドの数を制御することをさらに包含する、請求項9に記載の方法。前記カウンターを定期的に減少させることにより、デケイを導入して、それによって、前記コンパイルされたメソッドの過去の実行の関連性を自然にフェードすることをさらに包含する、請求項1に記載の方法。いずれかのメソッドに関連付けられたいずれかのカウンターが、所定のしきい値に達するとき、前記カウンターを定期的に減少させることをさらに包含する、請求項11に記載の方法。前記フラグに割り当てられた重量値を定期的に増加させ、その結果、前記コンパイルされたメソッドの後の実行は、該コンパイルされたメソッドの前の実行より多くカウントすることをさらに包含する、請求項1に記載の方法。コンピュータによって実行されるとき、該コンピュータに方法を実行させる命令を格納するコンピュータ読み取り可能格納媒体であって、該命令がコンピュータによって実行されるとき、該命令が該コンピュータにバーチャルマシン内でコンパイルされたメソッドの実行の頻度を決定させ、該方法は、コンパイルされたメソッドが実行されるとき、該コンパイルされたメソッドに対応するフラグをセットすることにより、該コンパイルされたメソッドが実行していることを示すことと、該フラグを定期的にスキャンし、該フラグがセットされているとき、対応するカウンターの値を増加させて、それから、該フラグをリセットすることと、該カウンターの該値を解析することによって、該コンパイルされたメソッドの実行の頻度を決定することとを包含する、コンピュータ読み取り可能格納媒体。前記方法は、前記カウンターの増加の間の時間間隔を調整することをさらに包含する、請求項14に記載のコンピュータ読み取り可能格納媒体。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッドが、第2のコンパイルされたメソッドを呼び出すとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項14に記載のコンピュータ読み取り可能格納媒体。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッドが、第2のコンパイルされたメソッドによって呼び出されるとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項14に記載のコンピュータ読み取り可能格納媒体。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッドから第2のコンパイルされたメソッドへ戻るとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項14に記載のコンピュータ読み取り可能格納媒体。前記コンパイルされたメソッドが実行されるとき、決定することは、第2のコンパイルされたメソッドから該コンパイルされたメソッドへ戻るとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項14に記載のコンピュータ読み取り可能格納媒体。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッド内でバックワードブランチを開始するとき、命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項14に記載のコンピュータ読み取り可能格納媒体。前記コンパイルされたメソッドが実行されるとき、決定することは、該コンパイルされたメソッド内でバックワードブランチに対して、ターゲットで命令を実行することをさらに伴い、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項14に記載のコンピュータ読み取り可能格納媒体。前記方法は、前記コンパイルされたメソッドの実行の頻度が、所定のしきい値を下回るとき、該コンパイルされたメソッドをイヴィクトし、その結果、該方法は、該コンパイルされたメソッドが再び実行されるとき、続いてリコンパイルもしくはインタープリットされなければならないことをさらに包含する、請求項14に記載のコンピュータ読み取り可能格納媒体。前記方法は、所定のしきい値を調整することにより、前記コンパイルされたメソッドの数を制御することをさらに包含する、請求項22に記載のコンピュータ読み取り可能格納媒体。前記カウンターを定期的に減少させることにより、デケイを導入して、それによって、前記コンパイルされたメソッドの過去の実行の関連性を自然にフェードすることをさらに包含する、請求項14に記載のコンピュータ読み取り可能格納媒体。前記方法は、いずれかの方法に関連付けられたいずれかのカウンターが、所定のしきい値に達するとき、前記カウンターを定期的に減少させることをさらに包含する、請求項24に記載のコンピュータ読み取り可能格納媒体。前記方法は、前記フラグに割り当てられた重量値を定期的に増加させ、その結果、前記コンパイルされたメソッドの後の実行は、該コンパイルされたメソッドの前の実行より多くカウントすることをさらに包含する、請求項14に記載のコンピュータ読み取り可能格納媒体。バーチャルマシン内でコンパイルされたメソッドの実行の頻度を決定する装置であって、コンパイルされたメソッドが実行されるとき、決定するように構成されている決定メカニズムと、該コンパイルされたメソッドに対応しているフラグをセットするように構成されているフラグセッティングメカニズムであって、該コンパイルされたメソッドが実行しているとき、該コンパイルされたメソッドが実行していることを示すフラグセッティングメカニズムと、該フラグを定期的にスキャンして、フラグがセットされているとき、対応するカウンターの値を増加させて、該フラグをリセットするように構成されているスキャニングメカニズムと、該カウンターの該値を解析することにより、該コンパイルされたメソッドの実行の頻度を決定するように構成されている解析メカニズムとを備えた、装置。前記カウンターの増加の間の時間間隔を調整するように構成されている調整メカニズムをさらに備えた、請求項27に記載の装置。前記決定メカニズムは、前記コンパイルされたメソッドが、第2のコンパイルされたメソッドを呼び出すとき、該コンパイルされたメソッドが、命令を実行することによって実行されるとき、決定するようにさらに構成されており、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項27に記載の装置。前記決定メカニズムは、前記コンパイルされたメソッドが、第2のコンパイルされたメソッドによって呼び出されるとき、該コンパイルされたメソッドが、命令を実行することによって、実行されるとき、決定するようにさらに構成されており、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項27に記載の装置。前記決定メカニズムは、前記コンパイルされたメソッドから、第2のコンパイルされたメソッドに戻るとき、該コンパイルされたメソッドが、命令を実行することによって、実行されるとき、決定するようにさらに構成されており、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項27に記載の装置。前記決定メカニズムは、第2のコンパイルされたメソッドから、前記コンパイルされたメソッドに戻るとき、該コンパイルされたメソッドが、命令を実行することによって、実行されるとき、決定するようにさらに構成されており、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項27に記載の装置。前記決定メカニズムは、前記コンパイルされたメソッドが、該コンパイルされたメソッド内でバックワードブランチを開始するとき、命令を実行することによって、実行されるとき、決定するようにさらに構成されており、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項27に記載の装置。前記決定メカニズムは、前記コンパイルされたメソッドが、該コンパイルされたメソッド内でバックワードブランチに対して、ターゲットで命令を実行することによって、実行されるとき、決定するようにさらに構成されており、該命令が、該コンパイルされたメソッドに対応する前記フラグをセットする、請求項27に記載の装置。前記コンパイルされたメソッドの実行の頻度が、所定のしきい値を下回るとき、該コンパイルされたメソッドをイヴィクトし、その結果、該方法は、該コンパイルされたメソッドが再び実行されるとき、続いてリコンパイルもしくはインタープリットされなければならないように構成されているイヴィクションメカニズムをさらに備えた、請求項27に記載の装置。前記所定のしきい値を調整することによって、前記コンパイルされたメソッドの数を制御するように構成されている調整メカニズムをさらに備えた、請求項35に記載の装置。前記カウンターを定期的に減少させることにより、デケイを導入して、それによって、前記コンパイルされたメソッドの過去の実行の関連性を自然にフェードするように構成されているデケイメカニズムをさらに備えた、請求項27に記載の装置。前記デケイメカニズムは、いずれかの方法に関連付けられたいずれかのカウンターが、所定のしきい値に達するとき、前記カウンターを定期的に減少させるようにされに構成されている、請求項37に記載の装置。前記フラグに割り当てられた重量値を定期的に増加させて、その結果、前記コンパイルされたメソッドの後の実行は、該コンパイルされたメソッドの前の実行より多くカウントするようにさらに構成されているウエイティングメカニズムである、請求項27に記載の装置。バーチャルマシン内でコンパイルされたメソッドの実行の頻度を決定することを容易にするシステムを提供する。概要本発明の1つの実施形態は、バーチャルマシン内でコンパイルされたメソッドの実行の頻度を決定することを容易にするシステムを提供する。システムは、コンパイルされたメソッドが実行されるとき、決定することによって始まる。その場合、システムは、コンパイルされたメソッドに対応するコンパイルされたフラグをセットすることにより、コンパイルされたメソッドが実行していることを示す。システムは、フラグを定期的にスキャンし、フラグがセットされているとき、対応するカウンターの値を増加させて、それから、フラグをリセットする。最終的に、システムは、カウンターの値を解析することにより、コンパイルされたメソッド実行の頻度を決定する。この実施形態の1つの変形において、システムは、カウンターの増加の間の時間間隔を調整する。この実施形態の1つの変形において、システムは、コンパイルされたメソッドが、第2のコンパイルされたメソッドを呼び出すとき、命令を実行することによって実行されるとき、決定し、命令が、コンパイルされたメソッドに対応するフラグをセットする。この実施形態の1つの変形において、システムは、コンパイルされたメソッドが、第2のコンパイルされたメソッドによって呼び出されるとき、命令を実行することによって実行されるとき、決定し、命令が、コンパイルされたメソッドに対応するフラグをセットする。この実施形態の1つの変形において、システムは、コンパイルされたメソッドが、そのコンパイルされたメソッドから第2のコンパイルされたメソッドへ戻るとき、命令を実行することによって実行されるとき、決定し、命令が、コンパイルされたメソッドに対応するフラグをセットする。この実施形態の1つの変形において、システムは、コンパイルされたメソッドが、第2のコンパイルされたメソッドからコンパイルされたメソッドへ戻るとき、命令を実行することによって実行されるとき、決定し、命令が、コンパイルされたメソッドに対応するフラグをセットする。この実施形態の1つの変形において、システムは、コンパイルされたメソッドが、そのコンパイルされたメソッド内でバックワードブランチを開始するとき、命令を実行することによって実行されるとき、決定し、命令が、コンパイルされたメソッドに対応するフラグをセットする。この実施形態の1つの変形において、システムは、コンパイルされたメソッドが、コンパイルされたメソッド内でバックワードブランチに対してターゲットで、命令を実行することによって実行されるとき、決定し、命令が、コンパイルされたメソッドに対応するフラグをセットする。この実施形態の1つの変形において、システムは、コンパイルされたメソッドの実行の頻度が、所定のしきい値を下回るとき、コンパイルされたメソッドをイヴィクトし、その結果、メソッドは、コンパイルされたメソッドが再び実行されるとき、続いてリコンパイルもしくはインタープリットされなければならい。さらなる変形において、システムは、所定のしきい値を調整することにより、コンパイルされたメソッドの数を制御する。この実施形態の1つの変形において、システムは、カウンターを定期的に減少させることにより、デケイを導入して、それによって、コンパイルされたメソッドの過去の実行の関連性を自然にフェードする。さらなる変形において、システムは、いずれかの方法に関連付けられたいずれかのカウンターが、所定のしきい値に達するとき、カウンターを定期的に減少させる。この実施形態の1つの変形において、システムは、フラグに割り当てられた重量値を定期的に増加させ、その結果、コンパイルされたメソッドの後の実行は、コンパイルされたメソッドの前の実行より多くカウントする。以下の説明が提供されることにより、当業者は本発明を作成し使用することができる。また、以下の説明は特定の用途とその条件との関連で提供される。開示された実施形態への様々な改良は、当業者にとって容易に明白であり、ここで定義された一般的な原則は、本発明の精神と範囲から逸脱することなく、他の実施形態と用途とに適用され得る。従って、本発明は説明された実施形態に限られるものではなく、ここで開示された原則と特徴と一致する最も広い範囲を許容する。この詳細な説明の中で記載されるデータ構造とコードとは、一般的にコンピュータの読み取り可能格納媒体に格納され、このコンピュータの読み取り可能格納媒体は、コンピュータシステムによって使用するためのコードおよび/またはデータを格納することができる任意のデバイスまたは媒体であり得る。これには、この限りではないが、ディスクドライブ、磁気テープ、CDコンパクトディスクとDVDデジタル多用途ディスクまたはデジタルビデオディスク、および信号が変調される搬送波と共に、もしくは搬送波なしで送信媒体で具体化されるコンピュータの命令信号といった磁気および光学の記憶デバイスが含まれる。例えば、送信媒体はインターネットといった通信ネットワークを含む。メモリ制限があるコンピューティングデバイス図1は、本発明の実施形態に従ったメモリ制限があるコンピューティングデバイス100を示す。メモリ制限があるコンピューティングデバイス100は、この限りではないが、携帯電話、マイクロプロセッサに基づくコンピュータシステム、デジタル信号プロセッサ、携帯型コンピューティングデバイス、整理記録ツール、デバイスコントローラー、装置内のコンピューテーショナルエンジンを含む、いかなるタイプのコンピューティングデバイスを含むことができる。メモリ制限があるコンピューティングデバイス100は、コンパイルされたメソッドとインタープリットされたメソッドとの両方の実行を交互にサポートするJavaVirtualMachineJVM102を備える。JAVA、JVM、JAVAVIRTUALMACHINEという用語は、SUNMicrosystems,Inc.ofSantaClara,Californiaの登録商標である。JVM102はプラットフォーム独立バーチャルマシンのいかなるタイプでもあり得て、JavaVirtualMachineに限られるものと意図されていない。JVM102は、コンパイルされたメソッドの格納装置110を備える。JVM102内でのパフォーマンスを向上させるために、いくつかのメソッドはコンパイルされて、コンパイルされたメソッドの格納装置110に加えられる。これにより、これらのメソッドはインタープリットされたメソッドよりも早く実行することができる。しかし、コンパイルされたメソッドは、コンパイルされたコードの質によって、一般的にインタープリットされたメソッドよりも多くのスペースを要する。さらに、多くのシステムにおいて、インタープリットされたコードを、コンパイルの後に破棄することができない。従って、JVM102は、より高い頻度で使用されるメソッドのみを動的にコンパイルし、それらをコンパイルされたメソッドの格納装置110に置く。加えて、JVM102は、後に続くメソッドの実行がインタープリットモードで行われるように、より低い頻度で使用されるコンパイルされたメソッドをコンパイルされたメソッドの格納装置110からイヴィクトすることにより、スペースを節約する。このようなイヴィクションは、ガーベージコレクションオペレーションの外で作動する他のイヴィクションオペレーション中と同様に、ガーベージコレクションオペレーション中に行われ得る。フラグアレイ図2は、本発明の実施形態に従ったフラグアレイ200を示す。フラグアレイ200は、前述したように、重量フックの犠牲選択の質と軽量フックの全体コストとの近くに到達する形で、犠牲選択を容易にするために用いられる。本発明の1つの実施形態では、JVM102における動的なコンパイラーは、1呼ばれる人のプロローグ、2呼び出し直後、3バックワードブランチの直前に、おいて、付加的なコードを生成する。前記の3つの場所を用いて、最も適切なメソッドのアクセス結局インタープリットより実行されるより良い、長いループのないコードストレッチを除いてをキャッチすることができる。また、その他のフックの場所または前記の場所のサブセットは、恐らく正確性が欠けるのでメソッドランキングの質が低くなるが、これもまた使用され得る。本発明は、フックを非常に短いインラインアクションinlineactionに制限する。すなわち、実行されているルーチンメソッド、機能に対応するフラグアレイ200内にフラグをセットする。図2に示された例では、ビットがフラグアレイ200にセットされており、コンパイルされたメソッド202でコンパイルされたメソッドを実行することを表す。フラグをセットするための実際のマシンの命令は、パフォーマンスを損なうことなくアドレス指定が可能な最小のメモリユニットワード、バイト、ビットのアドレス指定をするために選ばれる。一般的に、実際のマシンの命令は1バイトをセットする。しかし、あるアーキテクチャにおいては、完全なワードまたは単一のビットをセットし得る。これらのフラグは、グローバル変数によって特定されるオフセットに位置づけられるフラグアレイ200内に含まれる。各コンパイルされたメソッドは、フラグアレイ200へそれ自身のインデックスコンパイルされたメソッド202内にを有する。ここで留意すべきは、イヴィクトされたルーチンのインデックスは再度使用することができるということである。理論的に、当該のメソッドが時間内に所定の地点で使用されているという事実は、ミューテーターの実行が進行するにつれて、有用性の点で衰える。前述したように、ビットを収集して、それをランク付けする目的で使用するためにGCが起きるのを待つということは、一般的に時間がかかり過ぎる。1ビットよりも多くのビットを収集することは、他方で、ミューテーターの負担を増やす。本発明は、収集されたビットが調節されることにより、収集されたビットの関連性を、自然にフェードすることを表す第三段階を導入することによって、この緊張を解決する。参照アレイ図3は、本発明の実施形態に従った参照アレイ300を示す。参照アレイ300は、フラグのインデックスを、コンパイルされたメソッド112、コンパイルされたメソッド302、コンパイルされたメソッド304といった、それぞれのコンパイルされたメソッドにマッピングする。さらに、付加的なカウントのフィールドが各メソッドに関連付けられる。これは、第3のアレイもしくはカウントアレイ310によって、もしくは、各メソッドに付加的なフィールドを置くことによって、関連付けられる。前記のデータ構造を用いることで、システムは、コンパイルされたルーチン全てを反復し、フラグがセットされているフィールドに従ってカウントのフィールドを更新する。カウントフィールドが更新される後に、全てのフラグはリセットされる。本発明の1つの実施形態において、カウントフィールドを更新するプロセスは2つの段階を伴う。第1の段階では、全てのカウントが下げられることにより、メソッドの使用の関連性を自然にフェードする。そして、第2の段階では、必要に応じていくらかの重量要素を要するフラグは、所定の間隔でフラグのセットを有するそれらのルーチンのみに加えられる。本発明のもう1つの実施形態では、段階がたった1つだけであり、そこで、セットされたフラグを有するメソッドのための全てのカウントが更新されるが、セットされたフラグのための重量要素は間隔毎に増加する。カウントの低下は、従って、フラグの重量がリセットされた後に、GCの時まで遅らせることができる。ここで留意すべきは、このスキームはミューテーターへの影響をさらに減らすことである。本発明の第3の実施形態では、カウントのデケイがコンパイルされた任意のメソッドのためのあるカウントしきい値に到達することによって、トリガーされる。このデケイの処理は、典型的なプログラム実行をモデリングすることを助け、そしてそれは、一般的に小規模のコンパイルされたワーキングセットのメソッドへの高頻度のアクセスを伴う。ここでのワーキングセットは自然に発達する。通常のプログラム実行中、あるメソッドは、特定の時間内で、他のメソッドよりもはるかに高い頻度で実行される。自然に、最も頻繁に実行されるメソッドのセットワーキングセットは、プログラムが実行するにつれて変化する。この実施形態において、カウントのデケイの処理は、最近あまり実行されていないメソッドの重要性を減らすので、重要であり、そしてそれは、ワーキングセット内のメソッドのカウントの価値をより強くすることを助ける。より多くのメソッドが実行されるよりもインタープリットされている場合を考慮することもまた重要である。全体のパフォーマンスを上げるために、本発明の1つの実施形態では、仕事量をインタープリットへシフトすることにより、デケイラウンドが誘発される。例えば、これは、特定の時間間隔の間、コンパイルされる実行に対するインタープリットされる実行の割合を観察することによって求められ得る。事実上、本発明のこの実施形態により、デケイの処理に実質的に無関係な間隔の長さが選択される。このデケイのタイムフローは柱時計の時間とは分離されている。さらに、ガーベージコレクション時に、すべての方法は、累積されたカウントによって、ランク付けされる。システムは、まず、カウントを方法によってソートし、もしくはあるカウントのしきい値より低い犠牲を繰り返し検索し、所定のイヴィクションターゲットevictiontargetが満たされるまでしきい値を増加させることを保つ。サマリゼーション間隔が、フラグアレイ200内のセットされたフラグの関連性を維持するために十分に短い必要があることに留意する。サマリゼーション間隔は、またミューテーターの負担を広げるために十分に長い必要がある。これらの要求のバランスをとることにおいて、システムは、ミューテータスピードを考慮する必要がある。例えば、フラグセッティングフックが、ヒットされる速度システムは、またインデックスのオーバーフローを処理する必要がある。各インデックスが、コンパイルされる前に、メソッドに割り当てられる。利用可能なインデックスがない場合、システムは、インデックスがあくまでコンパイルを止めるか、もしくは現在ランキングの低いルーチンのインデックスを取得しようとし得る。最初のインデックスの所有者が、まれにフラグをセットしたとき、不正確が起こる。しかしながら、これはまれであり、十分大きいアレイを選択することによってこの上なく保証されているので、インデックスのオーバーフローは、起こり得そうもない。このことを達成するために、アレイのサイズは、ヒープのサイズに比例し得る。例えば、1メガバイトMBのヒープに対して、500の要素を有するアレイが用いられ得る。フラグビットのセット図4は、本発明の実施形態に従って、フラグアレイ200内のフラグビットをセットするプロセスを示すフローチャートを示す。システムは、コンパイルされたメソッド例えば、コンパイルされたメソッド112が実行されるときを決定することによって始まるステップ402。これは、上述の実行フックを用いることによって達成され得る。最終的に、システムは、フラグビットをフラグアレイ200内にセットすることにより、コンパイルされたメソッドが実行したことを示すステップ406。セットされたフラグビットを累積する図5は、本発明の実施形態に従って、フラブアレイ200からカウントアレイ310に、セットされたフラグビットを累積するプロセスを示すフローチャートを示す。ある定期的間隔で、システムは、セットされたフラグビットに対して、フラグアレイ200をスキャンするステップ502。それぞれのセットされたフラグビットに対して、システムは、フラグアレイ200内のフラグビットに対応するカウントアレイ310内でカウントを増加させるステップ504。カウントアレイ310内のすべての適正なカウントが、増加されたら、システムは、次の定期的間隔で、フラグアレイ200内のすべてのフラグビットを消去するステップ506。カウントアレイを増加する一方で、システムが、カウントの1つにおいて、オーバーフローを検出するとき、システムは、上述のように、カウントアレイ310のビットをシフトすることによって、デケイを導入し得ることに留意する。本発明の実施形態の上述が、例示および記載だけの目的のために示されてきた。それらは、完全であることは意図されておらず、また、開示されたフォームだけに本発明を制限することを意図されていない。従って、多くの改良および変形が、当業者にとってあきらかである。加えて、上述の開示は、本発明を制限することを意図されていない。本発明の範囲は、請求項によって定義される。いくつかの態様を記載しておく。態様1バーチャルマシン内において、コンパイルされたメソッドの格納部内のコンパイルされたメソッドの実行の頻度を決定する、コンピュータによって実行される方法であって、コンパイルされたメソッドが実行されることが判別手段によって判別されるとき、該コンパイルされたメソッドに対応するフラグをセットすることにより、該コンパイルされたメソッドが実行していることを示すことと、スキャニング手段によって、該フラグを定期的にスキャンし、該フラグがセットされていれば対応するカウンターの値を増加させて、それから、該フラグをリセットすることと、解析手段によって、該カウンターの該値を解析することによって、該コンパイルされたメソッドの実行の頻度を決定することとを包含する、方法。態様2前記カウンターの増加の間の時間間隔を調整手段によって調整することをさらに包含する、態様1に記載の方法。態様3前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内に位置されており、該コンパイルされたメソッドが第2のコンパイルされたメソッドを呼び出すときに実行される命令に従って行われる、態様1に記載の方法。態様4前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内に位置されており、該コンパイルされたメソッドが第2のコンパイルされたメソッドによって呼び出されたときに実行される命令に従って行われる、態様1に記載の方法。態様5前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内に位置されており、該コンパイルされたメソッドから第2のコンパイルされたメソッドへ戻るときに実行される命令に従って行われる、態様1に記載の方法。態様6前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、第2のコンパイルされたメソッドから該コンパイルされたメソッドへ戻るときに実行される、第2のコンパイルされたメソッド内に位置されている命令に従って行われる、態様1に記載の方法。態様7前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内に位置されており、該コンパイルされたメソッド内で前に戻る方向への分岐を開始するときに実行される命令に従って行われる、態様1に記載の方法。態様8前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内で前に戻る方向への分岐のターゲットに位置された命令に従って行われる、態様1に記載の方法。態様9前記コンパイルされたメソッドの実行の頻度が、所定のしきい値を下回るとき、該コンパイルされたメソッドを前記コンパイルされたメソッドの格納部から削除し、その結果、前記方法は、該コンパイルされたメソッドが再び実行されるときリコンパイルもしくはインタープリットされなければならないことをさらに包含する、態様1に記載の方法。態様10所定のしきい値を調整手段によって調整することにより、前記コンパイルされたメソッドの数を制御することをさらに包含する、態様9に記載の方法。態様11フェード手段によって前記カウンターを定期的に減少させて、前記コンパイルされたメソッドの過去の実行の影響を減らすことをさらに包含する、態様1に記載の方法。態様12いずれかのメソッドに関連付けられたいずれかのカウンターが、所定のしきい値に達するとき、フェード手段によって前記カウンターを減少させて、前記コンパイルされたメソッドの過去の実行の影響を減らすことをさらに包含する、態様1に記載の方法。態様13フェード手段によって前記フラグに割り当てられた重み値を定期的に増加させ、その結果、前記コンパイルされたメソッドの後の実行は、該コンパイルされたメソッドの前の実行より大きな影響をもつようにすることをさらに包含する、態様1に記載の方法。態様14コンピュータによって実行されるとき、該コンピュータに方法を実行させる命令を格納するコンピュータ読み取り可能格納媒体であって、該命令がコンピュータによって実行されるとき、該命令が該コンピュータにバーチャルマシン内でコンパイルされたメソッドの格納部内のコンパイルされたメソッドの実行の頻度を決定させ、該方法は、コンパイルされたメソッドが実行されることが判別手段によって判別されるとき、該コンパイルされたメソッドに対応するフラグをセットすることにより、該コンパイルされたメソッドが実行していることを示すことと、該フラグを定期的にスキャンし、該フラグがセットされていれば対応するカウンターの値を増加させて、それから、該フラグをリセットすることと、該カウンターの該値を解析することによって、該コンパイルされたメソッドの実行の頻度を決定することとを包含する、コンピュータ読み取り可能格納媒体。態様15前記方法は、前記カウンターの増加の間の時間間隔を調整することをさらに包含する、態様14に記載のコンピュータ読み取り可能格納媒体。態様16前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内に位置されており、該コンパイルされたメソッドが第2のコンパイルされたメソッドを呼び出すときに実行される命令に従って行われる、態様14に記載のコンピュータ読み取り可能格納媒体。態様17前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内に位置されており、該コンパイルされたメソッドが第2のコンパイルされたメソッドによって呼び出されたときに実行される命令に従って行われる、態様14に記載のコンピュータ読み取り可能格納媒体。態様18前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内に位置されており、該コンパイルされたメソッドから第2のコンパイルされたメソッドへ戻るときに実行される命令に従って行われる、態様14に記載のコンピュータ読み取り可能格納媒体。態様19前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、第2のコンパイルされたメソッドから該コンパイルされたメソッドへ戻るときに実行される、第2のコンパイルされたメソッド内に位置されている命令に従って行われる、態様14に記載のコンピュータ読み取り可能格納媒体。態様20前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内に位置されており、該コンパイルされたメソッド内で前に戻る方向への分岐を開始するときに実行される命令に従って行われる、態様14に記載のコンピュータ読み取り可能格納媒体。態様21前記コンパイルされたメソッドが実行されることが判別され、該コンパイルされたメソッドに対応するフラグがセットされることは、該コンパイルされたメソッド内で前に戻る方向への分岐のターゲットに位置された命令に従って行われる、態様14に記載のコンピュータ読み取り可能格納媒体。態様22前記方法は、前記コンパイルされたメソッドの実行の頻度が、所定のしきい値を下回るとき、該コンパイルされたメソッドを前記コンパイルされたメソッドの格納部から削除し、その結果、該方法は、該コンパイルされたメソッドが再び実行されるとき、リコンパイルもしくはインタープリットされなければならないことをさらに包含する、態様14に記載のコンピュータ読み取り可能格納媒体。態様23前記方法は、所定のしきい値を調整することにより、前記コンパイルされたメソッドの数を制御することをさらに包含する、態様22に記載のコンピュータ読み取り可能格納媒体。態様24前記方法は、前記カウンターを定期的に減少させて、前記コンパイルされたメソッドの過去の実行の影響を減らすことをさらに包含する、態様14に記載のコンピュータ読み取り可能格納媒体。態様25前記方法は、いずれかの方法に関連付けられたいずれかのカウンターが、所定のしきい値に達するとき、前記カウンターを減少させて、前記コンパイルされたメソッドの過去の実行の影響を減らすことをさらに包含する、態様14に記載のコンピュータ読み取り可能格納媒体。態様26前記方法は、前記フラグに割り当てられた重み値を定期的に増加させ、その結果、前記コンパイルされたメソッドの後の実行は、該コンパイルされたメソッドの前の実行より大きな影響をもつようにすることをさらに包含する、態様14に記載のコンピュータ読み取り可能格納媒体。態様27バーチャルマシン内でコンパイルされたメソッドの格納部内のコンパイルされたメソッドの実行の頻度を決定する装置であって、コンパイルされたメソッドが実行されることを判別するように構成されている判別手段と、該コンパイルされたメソッドが実行しているとき、該コンパイルされたメソッドに対応するフラグをセットして、該コンパイルされたメソッドが実行していることを示すフラグセッティング手段と、該フラグを定期的にスキャンして、フラグがセットされていれば対応するカウンターの値を増加させて、該フラグをリセットするように構成されているスキャニング手段と、該カウンターの該値を解析することにより、該コンパイルされたメソッドの実行の頻度を決定するように構成されている解析手段とを備えた、装置。態様28前記カウンターの増加の間の時間間隔を調整するように構成されている調整手段をさらに備えた、態様27に記載の装置。態様29前記判別手段は、前記コンパイルされたメソッド内に位置されており、前記コンパイルされたメソッドが第2のコンパイルされたメソッドを呼び出すときに実行される命令に従って判別するようにさらに構成されている、態様27に記載の装置。態様30前記判別手段は、前記コンパイルされたメソッド内に位置されており、前記コンパイルされたメソッドが第2のコンパイルされたメソッドによって呼び出されたときに実行される命令に従って判別するようにさらに構成されている、態様27に記載の装置。態様31前記判別手段は、該コンパイルされたメソッド内に位置されており、前記コンパイルされたメソッドから第2のコンパイルされたメソッドに戻るときに実行される命令に従って判別するようにさらに構成されている、態様27に記載の装置。態様32前記判別手段は、第2のコンパイルされたメソッドから、前記コンパイルされたメソッドに戻るときに実行される、第2のコンパイルされたメソッド内に位置されている命令に従って判別するようにさらに構成されている、態様27に記載の装置。態様33前記判別手段は、前記コンパイルされたメソッド内に位置されており、前記コンパイルされたメソッドが該コンパイルされたメソッド内で前に戻る方向への分岐を開始するときに実行される命令に従って判別するようにさらに構成されている、態様27に記載の装置。態様34前記判別手段は、前記コンパイルされたメソッドが、該コンパイルされたメソッド内で前に戻る方向への分岐のターゲットに位置された命令に従って判別するようにさらに構成されている、態様27に記載の装置。態様35前記コンパイルされたメソッドの実行の頻度が、所定のしきい値を下回るとき、該コンパイルされたメソッドを前記コンパイルされたメソッドの格納部から削除し、その結果、該方法は、該コンパイルされたメソッドが再び実行されるとき、リコンパイルもしくはインタープリットされなければならないように構成されているイヴィクション手段をさらに備えた、態様27に記載の装置。態様36前記所定のしきい値を調整することによって、前記コンパイルされたメソッドの数を制御するように構成されている調整手段をさらに備えた、態様35に記載の装置。態様37前記カウンターを定期的に減少させて、前記コンパイルされたメソッドの過去の実行の影響を減らすように構成されているデケイ手段をさらに備えた、態様27に記載の装置。態様38前記デケイ手段は、いずれかのメソッドに関連付けられたいずれかのカウンターが所定のしきい値に達するとき、前記カウンターを減少させて、前記コンパイルされたメソッドの過去の実行の影響を減らすようにされに構成されている、態様27に記載の装置。態様39前記フラグに割り当てられた重み値を定期的に増加させて、その結果、前記コンパイルされたメソッドの後の実行は、該コンパイルされたメソッドの前の実行より大きな影響をもつようにさらに構成されているウエイティング手段である、態様27に記載の装置。"