【手続補正書】
【提出日】平成20年9月12日(2008.9.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
最近アクセスされたオブジェクトを判定するため、実行されているプログラムを監視するステップと、
少なくとも１つのビットを操作してオブジェクトアクセスを示すステップと、
前記プログラムが実行されている間、前記プログラムの性能又は挙動を測定するプログラムパフォーマンスメトリックを監視するステップと、
プログラムパフォーマンスメトリックの監視に基づいて最適化を呼出すステップと、
最適化を実行することであって、
前記最適化の実行は、アクセスされたオブジェクトをメモリ内でクラスタ化するステップ、および
それぞれのアクセスされたオブジェクトに関して操作された少なくとも１つのビット
をリセットすることを備える最適化を実行するステップと
を備えたことを特徴とするコンピュータ化された方法。
【請求項２】
前記少なくとも１つのビットは複数ビットのカウンタであり、および前記操作は、複数ビットのカウンタをインクリメントすることを特徴とする請求項１に記載の方法。
【請求項３】
アクセスされ、クラスタ化されたオブジェクトは、ジェネレーショナルガベージコレクションされたヒープの新しい方の端に配置されることを特徴とする請求項１に記載の方法。
【請求項４】
仮想マシンにより行われることを特徴とする請求項１に記載の方法。
【請求項５】
前記少なくとも１つのビットは、アクセスされたオブジェクトのヘッダに配置されることを特徴とする請求項１に記載の方法。
【請求項６】
前記少なくとも１つのビットは、アクセスされたオブジェクトの外側に配置されることを特徴とする請求項１に記載の方法。
【請求項７】
アクセスされたオブジェクトは、第１のアクセスされたオブジェクトが第２のアクセスされたオブジェクトへのポインタを含むときは、第１および第２のオブジェクトがクラスタ内で一緒にグループ化されるような順序でアセンブルされることを特徴とする請求項１に記載の方法。
【請求項８】
前記アクセスされ、クラスタ化されたオブジェクトは、ヒープメモリの１つまたは複数のページを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記アクセスされ、クラスタ化されたオブジェクトは、ヒープメモリの複数の隣接ページを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記クラスタ化されたオブジェクトは、ヒープの隣接しない領域に配置されるアクセスされるオブジェクトの別個の複数のクラスタを含むことを特徴とする請求項１に記載の方法。
【請求項１１】
プログラムパフォーマンスメトリックは、パフォーマンスカウンタであることを特徴とする請求項１に記載の方法。
【請求項１２】
プログラムパフォーマンスメトリックは、Ｎ番目のメモリ圧力ガベージコレクションであることを特徴とする請求項１に記載の方法。
【請求項１３】
プログラムパフォーマンスメトリックは、割り当て率であることを特徴とする請求項１に記載の方法。
【請求項１４】
プログラムパフォーマンスメトリックは、オブジェクト参照カウンタであることを特徴とする請求項１に記載の方法。
【請求項１５】
プログラムパフォーマンスメトリックは、複数の挙動インジケータを組み合わせたものであることを特徴とする請求項１に記載の方法。
【請求項１６】
前記方法は、２つ以上のプログラムパフォーマンスメトリックを監視することを特徴とする請求項１に記載の方法。
【請求項１７】
監視されるプログラムを実行するメモリおよび中央処理装置と、
プログラムを実装してプログラム実行中のオブジェクトアクセスを記録するインストゥルメンテーションモジュールと、
前記プログラムが実行されている間、前記プログラムの性能又は挙動を測定するプログラムパフォーマンスメトリックを監視するため、かつ監視されるプログラムパフォーマンスメトリックに対する最適化応答を呼び出すための最適化モジュールであって、前記最適化が、最近アクセスされ、記録されたオブジェクトをメモリ内でクラスタ化する最適化モジュールと
を有する監視されるプログラムを監視して最適化するための最適化モジュールと
を備えたことを特徴とするコンピュータシステム。
【請求項１８】
前記監視されるプログラムパフォーマンスメトリックは、ＤＴＬＢキャッシュのミス率であることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項１９】
前記監視されるプログラムパフォーマンスメトリックは、Ｌ２キャッシュのミス率であることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２０】
前記監視されるプログラムパフォーマンスメトリックは、割り当て率であることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２１】
前記最適化モジュールは、コピージェネレーショナルガベージコレクションモジュールの一部であることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２２】
前記インストゥルメンテーションモジュールは、ＪＩＴコンパイラを含むことを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２３】
記録されるオブジェクトアクセスは、アクセスされるオブジェクトに対応するビットを設定することからなることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２４】
前記最適化モジュールは、ヒープ上のオブジェクトをトラバースすること、およびオブジェクト内のビット設定を介して、どのオブジェクトが最近アクセスされたかを識別することをさらに備えたことを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２５】
最近アクセスされたオブジェクトは、最近アクセスされた別のオブジェクトを指し示し、その別のオブジェクトの近くに配置されることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２６】
前記最適化は、最近アクセスされ、記録され、クラスタ化されたオブジェクトは、単一ヒープページが保持するより多くのメモリを占有しているので、過剰の最近アクセスされたオブジェクトは、二番目のヒープページのクラスタに流れ込むことを判定することを含むことを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２７】
前記実装されたプログラムは、オブジェクトアクセスを、ヒープアドレスに対応するビットベクトルに記録することを特徴とする請求項２６に記載のコンピュータシステム。
【請求項２８】
コンピュータ制御の方法であって、
アプリケーションの挙動を監視するステップと、
前記アプリケーションの性能又は挙動を表すプログラムパフォーマンスメトリックを監視するステップと、
前記アプリケーションの監視されたプログラムパフォーマンスメトリックに基づいて、ヒープ最適化を呼出すステップと、
最近アクセスされたオブジェクトをヒープ上で互いに近接してコピーするための命令とを有するヒープ最適化と
を備えたことを特徴とする方法。
【請求項２９】
オブジェクトを実装して、ヒープ最適化の間にアクセスされた回数をカウントするための命令をさらに備えたことを特徴とする請求項２８に記載の方法。
【請求項３０】
オブジェクトを実装して、オブジェクト内のデータフィールドがアクセスされたとき、そのヘッダ内にビットを設定するための命令をさらに備えたことを特徴とする請求項２８に記載の方法。
【請求項３１】
アプリケーションの中間言語表現を特定のアーキテクチャで機械コードにコンパイルする構成のジャストインタイムコンパイラであって、前記ジャストインタイムコンパイラが、実装されるコードを生成し、最近アクセスされたオブジェクトをマークするように前記実装されたコードを構成するジャストインタイムコンパイラと
アプリケーションを実行している間に、メトリックを収集するように構成された監視コードであって、前記監視コードが、マークされたオブジェクトを監視し、局所性のためのガベージコレクションをトリガする構成である監視コードであって、局所性のための前記ガベージコレクションは、フラグメンテーションレベル閾値の結果としてトリガされるガベージコレクションとは無関係にトリガされ、最近アクセスされた時にマークされたオブジェクトをヒープの残りの部分と別個のページに収集することを含む、監視コードと
を備えたことを特徴とするアプリケーションのためのデータ局所性を改善するシステム。
【請求項３２】
前記実装されるコードは、オブジェクトに埋込まれているオブジェクト参照カウンタを更新することにより、オブジェクトをマークする構成となっていることを特徴とする請求項３１に記載のシステム。
【請求項３３】
前記実装されるコードは、オブジェクトと離れたテーブルに格納されているオブジェクト参照カウンタを更新することにより、オブジェクトをマークする構成となっていることを特徴とする請求項３１に記載のシステム。
【請求項３４】
前記ジャストインタイムコンパイラは、ヒープデータにアクセスする重要な命令を有する方法内に、リードバリアのプロファイリングを生成することを特徴とする請求項３１に記載のシステム。
【請求項３５】
前記ジャストインタイムコンパイラは、２つのバージョンの方法を生成し、前記第１バージョンの方法と第２バージョンの方法が、別個のコードヒープに配置されることを特徴とする請求項３１に記載のシステム。