JP5422635B2 - バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法、装置、記憶媒体 - Google Patents
バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法、装置、記憶媒体 Download PDFInfo
- Publication number
- JP5422635B2 JP5422635B2 JP2011257348A JP2011257348A JP5422635B2 JP 5422635 B2 JP5422635 B2 JP 5422635B2 JP 2011257348 A JP2011257348 A JP 2011257348A JP 2011257348 A JP2011257348 A JP 2011257348A JP 5422635 B2 JP5422635 B2 JP 5422635B2
- Authority
- JP
- Japan
- Prior art keywords
- compiled
- flag
- compiled method
- computer
- executed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 321
- 238000005562 fading Methods 0.000 claims description 11
- 230000000694 effects Effects 0.000 claims description 3
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 12
- 239000003471 mutagenic agent Substances 0.000 description 10
- 238000005070 sampling Methods 0.000 description 3
- NGGRGTWYSXYVDK-RRKCRQDMSA-N 4-amino-5-chloro-1-[(2r,4s,5r)-4-hydroxy-5-(hydroxymethyl)oxolan-2-yl]pyrimidin-2-one Chemical compound C1=C(Cl)C(N)=NC(=O)N1[C@@H]1O[C@H](CO)[C@@H](O)C1 NGGRGTWYSXYVDK-RRKCRQDMSA-N 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Description
本出願は、ここで、35U.S.C.§119の下で、U.S.特許仮出願60/550,802、2004年3月5日出願、「Code Cache Eviction Ranking Based on Execution Interval Summarization」という名称、発明者Bernd J.W.MathiskeとOleg A.Pliss(代理人整理番号 SUN04−0481PSP)の優先権主張をする。
Java 2プラットフォーム、Micro Edition(J2ME(登録商標))は、無線デバイスの領域において非常に人気が高くなった。Motorola、Nokia、NTT DoCoMo、RIM、Siemens、および無線デバイス産業における他に多く主要な企業は、最近、非常に大容量のJ2MEの使用可能なデバイスを出荷し始めた。2003年だけで、2億台を超えるJ2MEの使用可能なモバイルフォンが出荷されたと推定される。
しかし、前述した全ての技術は欠点を有する。それら技術は、顕著にミューテーターを減速させるか、またはよい犠牲選択のための十分な情報を収集しない。さらに、GC間の間隔は、一般的に大き過ぎて、多数のメソッドから有益なランキングを確立することができない。(CLDC HIのように複数ビットにおける複数のGC間隔を反映することは、1つのGC間隔は一般的に既に長すぎるので、この問題を解決しない。)
従って、前述した欠点なしにバーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法が必要とされる。
本発明の1つの実施形態は、バーチャルマシン内でコンパイルされたメソッドの実行の頻度を決定することを容易にするシステムを提供する。システムは、コンパイルされたメソッドが実行されるとき、決定することによって始まる。その場合、システムは、コンパイルされたメソッドに対応するコンパイルされたフラグをセットすることにより、コンパイルされたメソッドが実行していることを示す。システムは、フラグを定期的にスキャンし、フラグがセットされているとき、対応するカウンターの値を増加させて、それから、フラグをリセットする。最終的に、システムは、カウンターの値を解析することにより、コンパイルされたメソッド実行の頻度を決定する。
この実施形態の1つの変形において、システムは、フラグに割り当てられた重量値を定期的に増加させ、その結果、コンパイルされたメソッドの後の実行は、コンパイルされたメソッドの前の実行より多くカウントする。
図1は、本発明の実施形態に従ったメモリ制限があるコンピューティングデバイス100を示す。メモリ制限があるコンピューティングデバイス100は、この限りではないが、携帯電話、マイクロプロセッサに基づくコンピュータシステム、デジタル信号プロセッサ、携帯型コンピューティングデバイス、整理記録ツール、デバイスコントローラー、装置内のコンピューテーショナルエンジンを含む、いかなるタイプのコンピューティングデバイスを含むことができる。メモリ制限があるコンピューティングデバイス100は、コンパイルされたメソッドとインタープリットされたメソッドとの両方の実行を交互にサポートするJava Virtual Machine(JVM)102を備える。(JAVA、JVM、JAVA VIRTUAL MACHINEという用語は、SUN Microsystems,Inc.of Santa Clara,Californiaの登録商標である。)JVM102はプラットフォーム独立バーチャルマシンのいかなるタイプでもあり得て、Java Virtual Machineに限られるものと意図されていない。
図2は、本発明の実施形態に従ったフラグアレイ200を示す。フラグアレイ200は、前述したように、重量フックの犠牲選択の質と軽量フックの全体コストとの近くに到達する形で、犠牲選択を容易にするために用いられる。本発明の1つの実施形態では、JVM102における動的なコンパイラーは、(1)呼ばれる側のプロローグ、(2)呼び出し直後、(3)バックワードブランチ〔前に戻る方向への分岐〕の直前に、おいて、付加的なコードを生成する。前記の3つの場所を用いて、最も適切なメソッドのアクセス(結局インタープリットより実行されるより良い、長いループのないコードストレッチを除いて)をキャッチすることができる。また、その他のフックの場所(または前記の場所のサブセット)は、恐らく正確性が欠けるのでメソッドランキングの質が低くなるが、これもまた使用され得る。
図3は、本発明の実施形態に従った参照アレイ300を示す。参照アレイ300は、フラグのインデックスを、コンパイルされたメソッド112、コンパイルされたメソッド302、コンパイルされたメソッド304といった、それぞれのコンパイルされたメソッドにマッピングする。さらに、付加的な「カウント」のフィールドが各メソッドに関連付けられる。これは、第3のアレイもしくはカウントアレイ310によって、もしくは、各メソッドに付加的なフィールドを置くことによって、関連付けられる。前記のデータ構造を用いることで、システムは、コンパイルされたルーチン全てを反復し、フラグがセットされているフィールドに従って「カウント」のフィールドを更新する。カウントフィールドが更新される後に、全てのフラグはリセットされる。
システムは、またインデックスのオーバーフローを処理する必要がある。各インデックスが、コンパイルされる前に、メソッドに割り当てられる。利用可能なインデックスがない場合、システムは、インデックスがあくまでコンパイルを止めるか、もしくは現在ランキングの低いルーチンのインデックスを取得しようとし得る。最初のインデックスの所有者が、まれにフラグをセットしたとき、不正確が起こる。しかしながら、これはまれであり、十分大きいアレイを選択することによってこの上なく保証されているので、インデックスのオーバーフローは、起こり得そうもない。このことを達成するために、アレイのサイズは、ヒープのサイズに比例し得る。(例えば、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に記載の装置。
102 Java Virtual Machine(JVM)
110 コンパイルされたメソッドの格納装置
112、202、302、304 コンパイルされたメソッド
200 フラグアレイ
300 参照アレイ
310 カウントアレイ
Claims (6)
- コンピュータのバーチャルマシン内において、該バーチャルマシン内のコンパイルされたメソッドの格納部内に格納されているコンパイルされたメソッドの実行の頻度を決定する、前記コンピュータによって実行される方法であって、
コンパイルされたメソッドが実行されることが前記コンピュータの判別手段によって判別されるとき、前記コンピュータのセット手段によって該コンパイルされたメソッドに対応するフラグをセットすることにより、該コンパイルされたメソッドが実行していることを示すことと、
前記コンピュータのスキャニング手段によって、該フラグを定期的にスキャンし、該フラグがセットされていれば対応するカウンターの値を増加させて、それから、該フラグをリセットすることと、
前記コンピュータの解析手段によって、該カウンターの該値を解析することによって、該コンパイルされたメソッドの実行の頻度を決定することと
を含み、
当該方法がさらに、
いずれかのメソッドに関連付けられたいずれかのカウンターの値が、所定のしきい値に達するとき、前記コンピュータのフェード手段によってすべてのカウンターの値を減少させて、時間がたつにつれて前記コンパイルされたメソッドの過去の実行の影響を減らすことをさらに包含する、
方法。 - コンピュータのバーチャルマシン内において、該バーチャルマシン内のコンパイルされたメソッドの格納部内に格納されているコンパイルされたメソッドの実行の頻度を決定する、前記コンピュータによって実行される方法であって、
コンパイルされたメソッドが実行されることが前記コンピュータの判別手段によって判別されるとき、前記コンピュータのセット手段によって該コンパイルされたメソッドに対応するフラグをセットすることにより、該コンパイルされたメソッドが実行していることを示すことと、
前記コンピュータのスキャニング手段によって、該フラグを定期的にスキャンし、該フラグがセットされていれば対応するカウンターの値を増加させて、それから、該フラグをリセットすることと、
前記コンピュータの解析手段によって、該カウンターの該値を解析することによって、該コンパイルされたメソッドの実行の頻度を決定することと
を含み、
当該方法がさらに、
前記コンピュータのフェード手段によって前記フラグに割り当てられた重み値を定期的に増加させ、その結果、前記コンパイルされたメソッドの後の実行は、該コンパイルされたメソッドの前の実行より多くカウントされるようにすることをさらに含む、
方法。 - コンピュータによって実行されるとき、該コンピュータに方法を実行させる命令を格納するコンピュータ読み取り可能記憶媒体であって、該命令がコンピュータによって実行されるとき、該命令が該コンピュータに、前記コンピュータのバーチャルマシン内のコンパイルされたメソッドの格納部内に格納されているコンパイルされたメソッドの実行の頻度を決定させ、
該方法は、
コンパイルされたメソッドが実行されることが前記コンピュータの判別手段によって判別されるとき、該コンパイルされたメソッドに対応するフラグをセットすることにより、該コンパイルされたメソッドが実行していることを示すことと、
該フラグを定期的にスキャンし、該フラグがセットされていれば対応するカウンターの値を増加させて、それから、該フラグをリセットすることと、
該カウンターの該値を解析することによって、該コンパイルされたメソッドの実行の頻度を決定することとを含み、
前記方法がさらに、
いずれかのメソッドに関連付けられたいずれかのカウンターの値が、所定のしきい値に達するとき、フェード手段によってすべてのカウンターの値を減少させて、時間がたつにつれて前記コンパイルされたメソッドの過去の実行の影響を減らすことをさらに含む、
コンピュータ読み取り可能記憶媒体。 - コンピュータによって実行されるとき、該コンピュータに方法を実行させる命令を格納するコンピュータ読み取り可能記憶媒体であって、該命令がコンピュータによって実行されるとき、該命令が該コンピュータに、前記コンピュータのバーチャルマシン内のコンパイルされたメソッドの格納部内に格納されているコンパイルされたメソッドの実行の頻度を決定させ、
該方法は、
コンパイルされたメソッドが実行されることが前記コンピュータの判別手段によって判別されるとき、該コンパイルされたメソッドに対応するフラグをセットすることにより、該コンパイルされたメソッドが実行していることを示すことと、
該フラグを定期的にスキャンし、該フラグがセットされていれば対応するカウンターの値を増加させて、それから、該フラグをリセットすることと、
該カウンターの該値を解析することによって、該コンパイルされたメソッドの実行の頻度を決定することとを含み、
前記方法がさらに、
フェード手段によって前記フラグに割り当てられた重み値を定期的に増加させ、その結果、前記コンパイルされたメソッドの後の実行は、該コンパイルされたメソッドの前の実行より多くカウントされるようにすることをさらに含む、
コンピュータ読み取り可能記憶媒体。 - コンピュータのバーチャルマシン内のコンパイルされたメソッドの格納部内に格納されているコンパイルされたメソッドの実行の頻度を決定する装置であって、
コンパイルされたメソッドが実行されることを判別するように構成されている判別手段と、
該コンパイルされたメソッドが実行しているとき、該コンパイルされたメソッドに対応するフラグをセットして、該コンパイルされたメソッドが実行していることを示すフラグセッティング手段と、
該フラグを定期的にスキャンして、フラグがセットされていれば対応するカウンターの値を増加させて、該フラグをリセットするように構成されているスキャニング手段と、
該カウンターの該値を解析することにより、該コンパイルされたメソッドの実行の頻度を決定するように構成されている解析手段と
いずれかのメソッドに関連付けられたいずれかのカウンターの値が、所定のしきい値に達するとき、前記コンピュータのフェード手段によってすべてのカウンターの値を減少させて、時間がたつにつれて前記コンパイルされたメソッドの過去の実行の影響を減らすフェード手段と
を備えた、装置。 - コンピュータのバーチャルマシン内のコンパイルされたメソッドの格納部内に格納されているコンパイルされたメソッドの実行の頻度を決定する装置であって、
コンパイルされたメソッドが実行されることを判別するように構成されている判別手段と、
該コンパイルされたメソッドが実行しているとき、該コンパイルされたメソッドに対応するフラグをセットして、該コンパイルされたメソッドが実行していることを示すフラグセッティング手段と、
該フラグを定期的にスキャンして、フラグがセットされていれば対応するカウンターの値を増加させて、該フラグをリセットするように構成されているスキャニング手段と、
該カウンターの該値を解析することにより、該コンパイルされたメソッドの実行の頻度を決定するように構成されている解析手段と
前記フラグに割り当てられた重み値を定期的に増加させ、その結果、前記コンパイルされたメソッドの後の実行は、該コンパイルされたメソッドの前の実行より多くカウントされるようにするフェード手段と
を備えた、装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US55080204P | 2004-03-05 | 2004-03-05 | |
US60/550,802 | 2004-03-05 | ||
US10/966,086 | 2004-10-15 | ||
US10/966,086 US7412693B2 (en) | 2004-03-05 | 2004-10-15 | Method and apparatus for determining frequency of execution for compiled methods within a virtual machine |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005063167A Division JP2005251208A (ja) | 2004-03-05 | 2005-03-07 | バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法と装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013208227A Division JP2013257916A (ja) | 2004-03-05 | 2013-10-03 | バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法と装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012038359A JP2012038359A (ja) | 2012-02-23 |
JP5422635B2 true JP5422635B2 (ja) | 2014-02-19 |
Family
ID=34915703
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005063167A Pending JP2005251208A (ja) | 2004-03-05 | 2005-03-07 | バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法と装置 |
JP2011257348A Active JP5422635B2 (ja) | 2004-03-05 | 2011-11-25 | バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法、装置、記憶媒体 |
JP2013208227A Pending JP2013257916A (ja) | 2004-03-05 | 2013-10-03 | バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法と装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005063167A Pending JP2005251208A (ja) | 2004-03-05 | 2005-03-07 | バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法と装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013208227A Pending JP2013257916A (ja) | 2004-03-05 | 2013-10-03 | バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法と装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7412693B2 (ja) |
EP (1) | EP1589425B1 (ja) |
JP (3) | JP2005251208A (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7568190B2 (en) * | 2005-03-08 | 2009-07-28 | International Business Machines Corporation | Late binding of optimization information for just in time compilation |
DE102005021986A1 (de) * | 2005-05-09 | 2006-11-16 | Robert Bosch Gmbh | Verfahren zur Steuergeräte-Überwachung |
US8875114B2 (en) * | 2007-09-21 | 2014-10-28 | International Business Machines Corporation | Employing identifiers provided by an operating system of a processing environment to optimize the processing environment |
US20090217246A1 (en) * | 2008-02-27 | 2009-08-27 | Nce Technologies, Inc. | Evaluating Software Programming Skills |
JP2010160622A (ja) * | 2009-01-07 | 2010-07-22 | Toshiba Corp | シミュレータ |
US8719797B2 (en) * | 2010-05-18 | 2014-05-06 | Blackberry Limited | System and method for debugging dynamically generated code of an application |
CN102693181A (zh) * | 2011-03-25 | 2012-09-26 | 鸿富锦精密工业(深圳)有限公司 | 分位刷写系统及方法 |
US9021421B1 (en) * | 2012-05-07 | 2015-04-28 | Google Inc. | Read and write barriers for flexible and efficient garbage collection |
CN105511942B (zh) * | 2015-12-02 | 2019-02-19 | 华为技术有限公司 | 语言虚拟机中热点中间代码的识别方法以及装置 |
CN111045779B (zh) * | 2019-11-01 | 2024-03-01 | 福建天泉教育科技有限公司 | 系统内存回收配置方法、存储介质 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6421647A (en) * | 1987-07-17 | 1989-01-25 | Toshiba Corp | Maintenance management method for peripheral equipment for electronic computer |
US5313616A (en) * | 1990-09-18 | 1994-05-17 | 88Open Consortium, Ltd. | Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines |
US6126329A (en) * | 1993-06-08 | 2000-10-03 | Rational Software Coporation | Method and apparatus for accurate profiling of computer programs |
JP3301359B2 (ja) * | 1997-09-30 | 2002-07-15 | 日本電気株式会社 | リスト管理システム、方法及び記憶媒体 |
US5995754A (en) * | 1997-10-06 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing byte-coded programs |
US6513155B1 (en) * | 1997-12-12 | 2003-01-28 | International Business Machines Corporation | Method and system for merging event-based data and sampled data into postprocessed trace output |
JP3376906B2 (ja) * | 1998-02-18 | 2003-02-17 | トヨタ自動車株式会社 | 計算機の負荷率計測システム |
US6321375B1 (en) * | 1998-05-14 | 2001-11-20 | International Business Machines Corporation | Method and apparatus for determining most recently used method |
JP2000022873A (ja) * | 1998-07-01 | 2000-01-21 | Ricoh Co Ltd | 複合機能装置 |
US6668372B1 (en) * | 1999-10-13 | 2003-12-23 | Intel Corporation | Software profiling method and apparatus |
US6681387B1 (en) * | 1999-12-01 | 2004-01-20 | Board Of Trustees Of The University Of Illinois | Method and apparatus for instruction execution hot spot detection and monitoring in a data processing unit |
JP2004529413A (ja) * | 2001-02-12 | 2004-09-24 | トリメディア テクノロジーズ インコーポレイテッド | 最適化された動的バイトコードインタプリタ |
US7350200B2 (en) * | 2001-03-29 | 2008-03-25 | Intel Corporation | Method and system of controlling dynamically compiled native code size |
JP3808755B2 (ja) * | 2001-11-07 | 2006-08-16 | 富士通株式会社 | Jitコンパイラを備えた仮想計算機 |
US20030110357A1 (en) * | 2001-11-14 | 2003-06-12 | Nguyen Phillip V. | Weight based disk cache replacement method |
JP2003316584A (ja) * | 2002-04-24 | 2003-11-07 | Matsushita Electric Ind Co Ltd | プレロードクラスの生成/更新装置、及び方法 |
JP2003337711A (ja) * | 2002-05-21 | 2003-11-28 | Hitachi Ltd | 情報処理装置および方法 |
US7062684B2 (en) * | 2002-12-19 | 2006-06-13 | International Business Machines Corporation | Enabling tracing of a repeat instruction |
US20050050524A1 (en) * | 2003-08-25 | 2005-03-03 | Arm Limited | Generating software test information |
-
2004
- 2004-10-15 US US10/966,086 patent/US7412693B2/en active Active
-
2005
- 2005-02-28 EP EP05251157A patent/EP1589425B1/en active Active
- 2005-03-07 JP JP2005063167A patent/JP2005251208A/ja active Pending
-
2011
- 2011-11-25 JP JP2011257348A patent/JP5422635B2/ja active Active
-
2013
- 2013-10-03 JP JP2013208227A patent/JP2013257916A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2013257916A (ja) | 2013-12-26 |
EP1589425B1 (en) | 2012-08-08 |
EP1589425A3 (en) | 2008-07-23 |
US20050198620A1 (en) | 2005-09-08 |
JP2005251208A (ja) | 2005-09-15 |
JP2012038359A (ja) | 2012-02-23 |
US7412693B2 (en) | 2008-08-12 |
EP1589425A2 (en) | 2005-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5422635B2 (ja) | バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法、装置、記憶媒体 | |
US8601036B2 (en) | Handling persistent/long-lived objects to reduce garbage collection pause times | |
US7765527B2 (en) | Per thread buffering for storing profiling data | |
JP3808755B2 (ja) | Jitコンパイラを備えた仮想計算機 | |
US6237141B1 (en) | Method and apparatus for dynamically optimizing byte-coded programs | |
EP1635258B1 (en) | Program execution control device | |
EP3577567B1 (en) | Multiple stage garbage collector | |
US8782629B2 (en) | Associating program execution sequences with performance counter events | |
WO2001088701A2 (en) | Dynamic adaptive tenuring of objects | |
US20040194076A1 (en) | Combining compilation and instruction set translation | |
EP2115600A1 (en) | Database management methodology | |
JP2003519834A (ja) | メモリ管理によって参照の局所性を改善するための方法および装置 | |
US9027011B1 (en) | Using method-profiling to dynamically tune a virtual machine for responsiveness | |
US6317876B1 (en) | Method and apparatus for determining a maximum number of live registers | |
CN109582649A (zh) | 一种元数据存储方法、装置、设备及可读存储介质 | |
US7650464B2 (en) | Object relocation guided by data cache miss profile | |
WO2012041600A1 (en) | Virtual machine stage detection | |
US8533710B1 (en) | Using observed thread activity to dynamically tune a virtual machine for responsiveness | |
US8566812B1 (en) | Using observed object patterns to dynamically tune a virtual machine for responsiveness | |
WO2003042835A1 (en) | Non-intrusive gathering of code usage information to facilitate removing unused compiled code | |
US6671877B1 (en) | Method and device to calculate activity degrees of method programs | |
JP2006164294A (ja) | Jitコンパイラを備えた仮想計算機 | |
US7966607B1 (en) | Method and apparatus for managing compiled methods in a unified heap | |
Wimmer et al. | Automatic object colocation based on read barriers | |
JP2006202317A (ja) | Jitコンパイラを備えた仮想計算機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111219 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130305 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130409 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130611 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131003 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20131010 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131029 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131125 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5422635 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |