JP2012104038A - コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム - Google Patents

コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム Download PDF

Info

Publication number
JP2012104038A
JP2012104038A JP2010253987A JP2010253987A JP2012104038A JP 2012104038 A JP2012104038 A JP 2012104038A JP 2010253987 A JP2010253987 A JP 2010253987A JP 2010253987 A JP2010253987 A JP 2010253987A JP 2012104038 A JP2012104038 A JP 2012104038A
Authority
JP
Japan
Prior art keywords
address
stack
stack frame
heap
working set
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.)
Granted
Application number
JP2010253987A
Other languages
English (en)
Other versions
JP5379779B2 (ja
Inventor
Hiroshi Horii
洋 堀井
Kiyokuni Kawachiya
清久仁 河内谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2010253987A priority Critical patent/JP5379779B2/ja
Priority to US13/287,242 priority patent/US8838874B2/en
Publication of JP2012104038A publication Critical patent/JP2012104038A/ja
Application granted granted Critical
Publication of JP5379779B2 publication Critical patent/JP5379779B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 ヒープ・オブジェクト化処理を高速化すること。
【解決手段】 処理系は、ヒープ・オブジェクト化されたスタック・オブジェクトのアドレスAを、ワーキング・セットに追加して、スタックを走査する。次に、アドレスAを割り当てるスタック・フレームを検出して、現在のスタック・フレームとする。現在のスタック・フレーム中に、ワーキング・セットに追加されたアドレスを指し示す変数がみつかると、それを、対応するヒープ・オブジェクトのアドレスに書き換える。現在のスタック・フレーム中のスタック・オブジェクトのフィールドが、ワーキング・セットに含まれているアドレスを指し示すなら、処理系は、そのスタック・オブジェクトのアドレスを、ワーキング・セットに追加する。現在見ているスタック・フレームが、ワーキング・セットに含まれているアドレスに対するポインタを含むなら、次のスタック・フレームに進み、そうでないなら、処理系は、そこでスタックの走査を終了する。
【選択図】 図6

Description

この発明は、一般的には、コンピュータの処理系におけるオブジェクトの処理に関し、より詳しくは、スタックに割り当てられたオブジェクトをヒープにコピーする処理に関する。
従来より、Java(R)などの処理系で、関数がコールされると、関数内で生成され、関数の処理が終了する時点で利用されなくなるオブジェクトは、スタックに積まれることがある。ところが、再帰呼び出しなどで関数が頻繁に呼び出されると、スタック領域が消費されて、スタック・オーバーフローが起こることがある。そこで、スタック領域上のオブジェクトをヒープにコピーして、スタック・フレームをずらすことによりスタックのサイズを圧縮する処理が行われる。
あるいは、Java(R)のFork-Joinフレームワークのワーク・スティーリング(work stealing)処理において、ある関数内で生成したタスク・オブジェクトを、他のスレッドが処理可能な状態にし、タスク・オブジェクトの処理が終了するまで必ず待機する場合、そのタスク・オブジェクトはスタック上に配置することが可能である。この際、タスク・オブジェクトを生成したスレッド以外のスレッドが、そのタスク・オブジェクトを処理する場合、処理系の安全性のために、タスク・オブジェクトを、スタックからヒープに一旦コピーするという処理が必要になる。
このような、スタックに割り当てられたオブジェクトをヒープに割り当てる処理を、ヒープ・オブジェクト化(heapification)と呼ぶことにする。また、以下では便宜上、スタックに割り当てられたオブジェクト(stack-allocated object)をスタック・オブジェクト、ヒープに割り当てられたオブジェクトを、ヒープ・オブジェクト(heapified object)と呼ぶことにする。
ところが、その際、単にスタックからヒープにオブジェクトをコピーしただけでは、処理は完結しない。スタック・オブジェクトが、コピーされたヒープ・オブジェクトをきちんと指すようにしなくてはならないからである。そのための一連の処理を、図1〜図3を参照して説明する。
図1には、コンピュータのメモリにおける、スタック102と、ヒープ104が示されている。スタック102は、それぞれが関数呼び出しに対応するスタック・フレーム102a、102b等からなる。
図示されているように、スタック・フレーム102aには、スタック・オブジェクト106と、ローカル変数108が配置され、スタック・フレーム102bには、フィールド変数112aをもつスタック・オブジェクト112が配置されている。
図1のようなスタック・オブジェクトと変数の配置は、例えば、次のようなコードで、fooの処理を要求した際に、barを処理中の状態に対応する。
class S {
}

class T {
S a;
}

void foo() {
S a = new S();
bar(a);
}

void bar(S a) {
T b = new T();
b.a = a;
...
}
さて、Java(R)仮想マシンまたはオペレーティング・システムに機能により、図2に示すように、スタック・オブジェクト106が、ヒープ104にコピーされ、ヒープ・オブジェクト202になったとする。
すると、ヒープ・オブジェクト202のアドレスをBとすると、このヒープ・オブジェクト化により、スタック・フレームにおいて今までスタック・オブジェクト106を指していたアドレスAを、図3に示すように、アドレスBに書き換える必要がある。
ところが、このためには、Java(R)仮想マシンまたはオペレーティング・システムは、スタック・フレームを順に走査し、元のスタック・オブジェクト106のアドレスAを指し示す変数を、ヒープ・オブジェクト202のアドレスBを指し示すように書き換える処理が必要となる。しかし、どのスタック・フレームに、ヒープ・オブジェクト化する前のスタック・オブジェクトのアドレスを指し示す変数があるか分からないので、すべてのスタック・オブジェクトを走査する必要があり、その処理に時間がかかっていた。
Erik Corry, "Optimistic stack allocation for java-like languages", International Symposium on Memory Management archive, Proceedings of the 5th international symposium on Memory management table of contents, Ottawa, Ontario, Canada, Pages: 162 - 173, 2006に開示されている技術は、一旦オブジェクトをスタックに割当て、エスケープした時点でヒープにオブジェクトをコピーする。この技術は、メソッド・フレーム単位でなく、ループ単位でスタックを構成し、オブジェクトを割り当てた領域より後に呼ばれたループの領域を走査し、参照の張り直しを行っている。
Kevin Cleereman, Michelle Cheatham, "Runtime Support of Speculative Optimization for Offline Escape Analysis", ( http://knoesis.wright.edu/library/publications/SERP-07-EscapeAnalysis.pdf )に開示されている技術においても、オブジェクトが割り当てられたスタック・フレームより上のフレームのみが走査される。
しかし、これらの従来技術は、スタック・フレームの走査にかかる時間を削減する技法を開示するものではない。
Erik Corry, "Optimistic stack allocation for java-like languages", International Symposium on Memory Management archive, Proceedings of the 5th international symposium on Memory management table of contents, Ottawa, Ontario, Canada, Pages: 162 - 173, 2006 Kevin Cleereman, Michelle Cheatham, "Runtime Support of Speculative Optimization for Offline Escape Analysis", ( http://knoesis.wright.edu/library/publications/SERP-07-EscapeAnalysis.pdf )
従って、本発明の目的は、スタックに割り当てられたオブジェクトをヒープに割り当てる際に必要となる、アドレス書き換えのためのスタック走査にかかる時間を低減する技法を提供することにある。
この発明は、上記課題を解決するためになされたものであり、この発明の機能を備えた処理系はまず、ヒープ・オブジェクト化されたスタック・オブジェクトのアドレスAを、好適にはヒープに確保したメモリ領域である、ワーキング・セットに追加して、スタックを走査する。
処理系は、アドレスAを割り当てるスタック・フレームを検出して、それを現在のスタック・フレームとする。そして、現在のスタック・フレーム中に、ワーキング・セットに追加されたアドレスを指し示す変数がみつかると、それを、対応するヒープ・オブジェクトのアドレスに書き換える。
現在のスタック・フレーム中のスタック・オブジェクトのフィールドが、ワーキング・セットに含まれているアドレスを指し示すなら、処理系は、そのスタック・オブジェクトのアドレスを、ワーキング・セットに追加する。
現在見ているスタック・フレームが、ワーキング・セットに含まれているアドレスに対するポインタを含むなら、次のスタック・フレームに進む。
現在見ているスタック・フレームが、ワーキング・セットに含まれているアドレスに対するポインタを含まないなら、処理系は、そこでスタックの走査を終了する。
ここでスタックの走査を打ち切るのは、現在見ているスタック・フレームが、ワーキング・セットに含まれているアドレスに対するポインタを含まないなら、それ以降のスタック・フレームが、ワーキング・セットに含まれているアドレスに対するポインタを含まないので最早調べる必要がないという、本発明の知見に基づく処理である。
この発明によれば、ヒープ・オブジェクト化処理において、ポインタの書き換えを行うためのスタック・フレームの走査において、全てのスタック・フレームを走査することなく、途中で走査を打ち切ることが可能となるので、ヒープ・オブジェクト化処理を高速化することができる。
ヒープ・オブジェクト化処理の様子を模式的に示す図である。 ヒープ・オブジェクト化処理の様子を模式的に示す図である。 ヒープ・オブジェクト化処理の様子を模式的に示す図である。 本発明を実施するためのハードウェアの一例のブロック図である。 処理環境の機能ブロックのレイヤを示す図である。 本発明のヒープ・オブジェクト化処理の処理のフローチャートを示す図である。 本発明のヒープ・オブジェクト化処理の処理のフローチャートを示す図である。 本発明に従うヒープ・オブジェクト化処理の様子を模式的に示す図である。 本発明に従うヒープ・オブジェクト化処理の様子を模式的に示す図である。
以下、図面に従って、本発明の実施例を説明する。これらの実施例は、本発明の好適な態様を説明するためのものであり、発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断わらない限り、同一符号は、同一の対象を指すものとする。
図4を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図4において、システム・バス402には、CPU404と、主記憶(RAM)406と、ハードディスク・ドライブ(HDD)408と、キーボード410と、マウス412と、ディスプレイ414が接続されている。CPU404は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標)4、インテル社のCore(商標) 2 DUO、Xeon(商標)、AMD社のAthlon(商標)などを使用することができる。主記憶406は、好適には、2GB以上の容量、より好ましくは、4GB以上の容量をもつものである。
ハードディスク・ドライブ408には、オペレーティング・システム502(図5)が、格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows(商標) 7、Windows XP(商標)、Windows(商標)2003サーバ、アップルコンピュータのMac OS(商標)などの、CPU404に適合する任意のものでよい。
ハードディスク・ドライブ408にはまた、好適にはApacheなどの、Webサーバとしてシステムを動作させるためのプログラムが保存され、システムの起動時に、主記憶406にロードされる。
ハードディスク・ドライブ408にはさらに、Java(R)仮想マシン(JVM)504(図5)を実現するためのJava(R) Runtime Environmentプログラムが保存され、システムの起動時に、主記憶406にロードされる。JVM504は、本発明に係るヒープ・オブジェクト化の機能を実装する。
ハードディスク・ドライブ408にはさらに、アプリケーション・プログラムのバイトコード506(図5)が保存されている。
キーボード410及びマウス412は、オペレーティング・システム502が提供するグラフィック・ユーザ・インターフェースに従い、ディスプレイ414に表示されたアイコン、タスクバー、ウインドウなどのグラフィック・オブジェクトを操作するために使用される。
ディスプレイ414は、これには限定されないが、好適には、1024×768以上の解像度をもち、32ビットtrue colorのLCDモニタである。
通信インターフェース416は、好適には、イーサネット(R)プロトコルにより、ネットワークと接続されている。通信インターフェース416は、クライアント・コンピュータ(図示しない)からApacheが提供する機能により、TCP/IPなどの通信プロトコルに従い、処理リクエストを受け取り、あるいは処理結果を、クライアント・コンピュータ(図示しない)に返す。
図5は、ソフトウェアのレイヤを示す図である。図5において、最下層は、オペレーティング・システム502である。
オペレーティング・システム502の上では、オペレーティング・システム502に適合するJVM504が動作する。
JVM504上では、アプリケーション506のバイトコードが動作する。アプリケーション506が動作する間に、JVM504はシステムの状態を監視し、スタックのサイズ圧縮、あるいはワーク・スティーリングの処理を行い、それに伴って、ヒープ・オブジェクト化処理を実行する。
次に、図6と図7のフローチャート、及び図8と図9の例を参照して、JVM504によるヒープ・オブジェクト化処理を、より詳細に説明する。ステップ602では、JVM504は、ヒープ・オブジェクト化するスタック・オブジェクト806のアドレスAをヒープ804にコピーし、コピー先のアドレスBを特定するとともに、アドレスBに、スタック・オブジェクト806をコピーする。コピーした結果は、ヒープ・オブジェクト808となる。
ステップ604では、JVM504は、経由到達可能オブジェクト集合(ワーキング・セット)WSに、アドレスAを入れる。ワーキング・セットWSは、好適には、図示しないが、ヒープ802に確保した領域である。ワーキング・セットWSは、好適には、アドレスを格納する配列からなる。
ステップ606では、JVM504は、アドレスAが指定されたスタック・フレームを検索した結果見つかったスタック・フレームfcurrentを、fstartとする。
ここで、図7のフローチャートを参照して、ステップ606での処理をより詳細に説明する。図7のステップ702において、JVM504は、ヒープ・オブジェクト化するスタック・オブジェクト806のアドレスAを指定する。
ステップ704では、JVM504は、アドレスAが割り当てられたスタックSを特定する。ここでは、スタックSは、図8に示すスタック802である。
ステップ706では、JVM504は、スタックS内で最初に呼ばれた関数に対応する関数フレームを特定し、それをfcurrentとする。ここでは、図8に示すスタック・フレーム802aが、その関数フレームであるとする。
ステップ708では、JVM504は、fcurrent内にアドレスAが含まれるかどうか判断する。図8の例では、スタック・フレーム802aにアドレスAが含まれていないので、ステップ710に進み、fcurrentの次に呼ばれた関数に対応する関数フレーム802bを次のfcurrentとする。
このようにステップ708とステップ710を繰り返すことにより、スタック・フレーム802a→スタック・フレーム802b→スタック・フレーム802c→スタック・フレーム802dと順に走査し、スタック・フレーム802dに到達した時点で、スタック・フレーム802dにアドレスAを指し示す変数が含まれているので、ステップ708での判断が肯定的になり、ステップ712に移行して、fcurrentをfstartとして、ステップ606に戻る。
こうして図6のフローチャートに戻って、JVM504は次に、ステップ608で、スタック・フレームfcurrent内に、ワーキング・セットWS内のアドレスを指すポインタが存在するかどうか判断する。
図8の例において、目下fcurrentは、スタック・フレーム802dなので、ワーキング・セットWS内のアドレスAを指すポインタが存在し、よって、ステップ608の判断が肯定的になり、ステップ610でfcurrent内のアドレスAを指す変数(ポインタ)を、図8に示すヒープ・オブジェクト808を指すアドレスBに書き換える。それは、スタック・フレーム802dでは、ローカル変数808である。ステップ612では、JVM504は、ワーキング・セットWS内のアドレスを指すポインタを含むスタック・オブジェクトがもし現在のスタック・フレーム802dにあれば、そのようなスタック・オブジェクトのアドレスをワーキング・セットWSに追加するが、スタック・フレーム802aにはそのようなスタック・オブジェクトのアドレスはないので、ステップ612は実行されない。ステップ614では、fcurrentの次に呼ばれた関数に対する関数フレームをfcurrentとする。すなわち、図8では、スタック・フレーム802dの次のスタック・フレーム802eがfcurrentとなる。
fcurrentであるスタック・フレーム802eにおいて、ワーキング・セットWS内のアドレスAを指すポインタが存在し、よって、ステップ608の判断が肯定的になり、ステップ610でfcurrent内のアドレスAを指すポインタを、図8に示すヒープ・オブジェクト808を指すアドレスBに書き換える。スタック・フレーム802eでは、アドレスAを指すのは、ローカル変数812及び、スタック・オブジェクト814のフィールド814aであって、それらは、図9に示すように、Bに書き換えられる。ステップ612では、JVM504は、ワーキング・セットWS内のアドレスを指すポインタを含むスタック・オブジェクト814のアドレスCをワーキング・セットWSに追加する。ステップ614では、fcurrentの次に呼ばれた関数に対する関数フレームをfcurrentとする。すなわち、図9において、スタック・フレーム802eの次のスタック・フレーム802fがfcurrentとなる。
そこで、ステップ608での判断に戻ったとき、ワーキング・セットWSに含まれているアドレスは、AとCであるが、スタック・フレーム802fには、Eを指すローカル変数818と、Dを指すローカル変数816があるだけで、Aを指すローカル変数もCを指すローカル変数もないので、ステップ608の判断が否定的になり、ステップ616で、JVM504は、スタック・フレームの探索を終了する。
上記の処理を、下記の関数呼び出しのソースコードの例で説明すると、ここで、下記の各々の関数呼び出しが、1つのスタック・フレームに対応する。
void foo() {
//ここでアドレスAにスタック割当てしたとする。
Object x = new Object();
bar(x);
}

void bar(Object y) {
System.out.println(y);
barbar();
}

void barbar() {
barbarbar()
}

void barbarbar() {
...
}
上記のコードで、bar(Object)のフレームは、スタックに割当てされたオブジェクトにアクセスすることができるが、barbar()のフレームからは、アクセスすることができない。
barbarbar()を実行中にヒープ・オブジェクト化を行う場合、foo()、bar(Object)の中では、スタック割当てしたオブジェクトへのポインタ(下の例だとxおよびy)を書き換える必要がある。
しかし、barbar()にはAへのポインタがないので、barbarbar()にも確実にAへのポインタがない。つまり、探索は、barbar()までで止めてもよい、ということが保証される。
以上、JVM上で、Java(R)バイトコードが実行される場合のヒープ・オブジェクト化処理について説明したが、JITコンパイラによって生成されたコードは、本発明に係るヒープ・オブジェクト化を実行するJVMの関数を呼び出すようにすることで、本発明に係る処理を利用することができる。
また、JVMなどの特定のプラットフォームに関連して本発明の実施例を説明してきたが、本発明はこのような特定のプラットフォームでの実施に限定されず、任意のコンピュータのプラットフォームで実施可能である。
さらに、ヒープ・オブジェクト化処理は、JVMでなく、オペレーティング・システムが実行するようにしてもよい。
102 スタック
104 ヒープ
106、112 スタック・オブジェクト
202 ヒープ・オブジェクト
404 CPU
406 主記憶
408 ハードディスク・ドライブ
502 オペレーティング・システム
504 JVM
802 スタック
804 ヒープ
806、814 スタック・オブジェクト
808 ヒープ・オブジェクト

Claims (8)

  1. コンピュータの処理により、スタック・フレームにあるオブジェクトをヒープ・オブジェクト化する方法であって、
    ヒープ領域にコピーすべきスタック・フレーム上の所定のオブジェクトのアドレスをワーキング・セットに格納するステップと、
    前記所定のオブジェクトをヒープ領域にコピーして、そのヒープ領域上でのアドレスを保持するステップと、
    スタック・フレームを順に辿り、前記ワーキング・セットに格納したアドレスを指示するポインタが見つかると、それが指示するアドレスを、前記ヒープ領域上でのアドレスに変換し、次のスタック・フレームに進むステップであって、当該アドレス変換において、変換したアドレスがスタック・フレーム上のオブジェクトのフィールドの値として格納されている場合は、そのオブジェクトのアドレスをワーキング・セットに格納するステップと、
    スタック・フレームに前記ワーキング・セットに格納したアドレスを指示するポインタが見つからないことに応答して、処理を停止するステップを有する、
    方法。
  2. 請求項1の方法を実行するステップを含む、スタック圧縮方法。
  3. 請求項1の方法を実行するステップを含む、ワーク・スティーリング方法。
  4. 前記各ステップは、Java(R)仮想マシン上で実行される、請求項1の方法。
  5. コンピュータの処理により、スタック・フレームにあるオブジェクトをヒープ・オブジェクト化するプログラムであって、
    前記コンピュータに、
    ヒープ領域にコピーすべきスタック・フレーム上の所定のオブジェクトのアドレスをワーキング・セットに格納するステップと、
    前記所定のオブジェクトをヒープ領域にコピーして、そのヒープ領域上でのアドレスを保持するステップと、
    スタック・フレームを順に辿り、前記ワーキング・セットに格納したアドレスを指示するポインタが見つかると、それが指示するアドレスを、前記ヒープ領域上でのアドレスに変換し、次のスタック・フレームに進むステップであって、当該アドレス変換において、変換したアドレスがスタック・フレーム上のオブジェクトのフィールドの値として格納されている場合は、そのオブジェクトのアドレスをワーキング・セットに格納するステップと、
    スタック・フレームに前記ワーキング・セットに格納したアドレスを指示するポインタが見つからないことに応答して、処理を停止するステップを実行させる、
    プログラム。
  6. 前記各ステップは、Java(R)仮想マシン上で実行される、請求項5のプログラム。
  7. コンピュータの処理により、スタック・フレームにあるオブジェクトをヒープ・オブジェクト化するシステムであって、
    ヒープ領域にコピーすべきスタック・フレーム上の所定のオブジェクトのアドレスをワーキング・セットに格納する手段と、
    前記所定のオブジェクトをヒープ領域にコピーして、そのヒープ領域上でのアドレスを保持する手段と、
    スタック・フレームを順に辿り、前記ワーキング・セットに格納したアドレスを指示するポインタが見つかると、それが指示するアドレスを、前記ヒープ領域上でのアドレスに変換し、次のスタック・フレームに進む手段であって、当該アドレス変換において、変換したアドレスがスタック・フレーム上のオブジェクトのフィールドの値として格納されている場合は、そのオブジェクトのアドレスをワーキング・セットに格納する手段と、
    スタック・フレームに前記ワーキング・セットに格納したアドレスを指示するポインタが見つからないことに応答して、処理を停止する手段を有する、
    システム。
  8. 前記各手段は、Java(R)仮想マシン上で実行される、請求項7のシステム。
JP2010253987A 2010-11-12 2010-11-12 コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム Active JP5379779B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010253987A JP5379779B2 (ja) 2010-11-12 2010-11-12 コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム
US13/287,242 US8838874B2 (en) 2010-11-12 2011-11-02 Method, program, and system for processing object in computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010253987A JP5379779B2 (ja) 2010-11-12 2010-11-12 コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム

Publications (2)

Publication Number Publication Date
JP2012104038A true JP2012104038A (ja) 2012-05-31
JP5379779B2 JP5379779B2 (ja) 2013-12-25

Family

ID=46048729

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010253987A Active JP5379779B2 (ja) 2010-11-12 2010-11-12 コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム

Country Status (2)

Country Link
US (1) US8838874B2 (ja)
JP (1) JP5379779B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753846B2 (en) * 2012-09-06 2017-09-05 Red Hat, Inc. Adjusting the operating memory used by a virtual machine during runtime
US11146629B2 (en) * 2014-09-26 2021-10-12 Red Hat, Inc. Process transfer between servers
US10853343B2 (en) * 2017-05-16 2020-12-01 Sap Se Runtime data persistency for in-memory database systems
CN112100017B (zh) * 2019-06-17 2023-07-21 腾讯科技(深圳)有限公司 一种内存资源监控方法及装置
US11397568B2 (en) * 2019-12-10 2022-07-26 International Business Machines Corporation Escape analysis support for method redefinition

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5949973A (en) * 1997-07-25 1999-09-07 Memco Software, Ltd. Method of relocating the stack in a computer system for preventing overrate by an exploit program
JP2004078750A (ja) * 2002-08-21 2004-03-11 Nippon Telegr & Teleph Corp <Ntt> オブジェクト管理装置および方法とプログラム
US20050080980A1 (en) * 2003-09-30 2005-04-14 Intel Corporation Method and system of permitting stack allocation to programs having open-world features
US20090307431A1 (en) * 2008-06-06 2009-12-10 Garst Jr Gerald Blaine Memory management for closures

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2345159B (en) * 1998-12-23 2003-08-20 Ibm Virtual machine memory management
US6247027B1 (en) * 1999-05-17 2001-06-12 Sun Microsystems, Inc. Facilitating garbage collection during object versioning for space and time dimensional computing
US7085789B1 (en) * 2001-07-30 2006-08-01 Microsoft Corporation Compact garbage collection tables
US8825719B2 (en) * 2008-10-30 2014-09-02 Microsoft Corporation Incremental lock-free stack scanning for garbage collection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5949973A (en) * 1997-07-25 1999-09-07 Memco Software, Ltd. Method of relocating the stack in a computer system for preventing overrate by an exploit program
JP2004078750A (ja) * 2002-08-21 2004-03-11 Nippon Telegr & Teleph Corp <Ntt> オブジェクト管理装置および方法とプログラム
US20050080980A1 (en) * 2003-09-30 2005-04-14 Intel Corporation Method and system of permitting stack allocation to programs having open-world features
US20090307431A1 (en) * 2008-06-06 2009-12-10 Garst Jr Gerald Blaine Memory management for closures

Also Published As

Publication number Publication date
US8838874B2 (en) 2014-09-16
US20120124018A1 (en) 2012-05-17
JP5379779B2 (ja) 2013-12-25

Similar Documents

Publication Publication Date Title
US6948172B1 (en) Preemptive multi-tasking with cooperative groups of tasks
US6442568B1 (en) Customer information control system application programming interface with transient data functions, in a loosely coupled data processing environment
US5511192A (en) Method and apparatus for managing thread private data in a parallel processing computer
JP4917138B2 (ja) オブジェクト最適配置装置、オブジェクト最適配置方法、及びオブジェクト最適配置プログラム
JP5182801B2 (ja) コンピューティング環境内のメモリ管理方法、メモリ管理システム及びコンピュータ・プログラム
JP5379779B2 (ja) コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム
JP5980916B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
JP2007213490A (ja) アプリケーションサーバシステムおよび仮想マシンプログラム
US20040268370A1 (en) Exception handling
US11456914B2 (en) Implementing affinity and anti-affinity with KUBERNETES
US11016886B2 (en) Multi-ring shared, traversable, and dynamic advanced database
JP5588072B2 (ja) メモリ割り当て方法、プログラム、及びシステム
WO2006111208A1 (en) Process and system for real-time relocation of objects during garbage collection
JP2008107966A (ja) 計算機システム
US7240176B2 (en) Apparatus and methods for placing a managed heap
US8930677B2 (en) Computer operation control method, program, and system
US10423526B2 (en) Method, program, and system for reducing the cost of stack scanning
US7401178B1 (en) Expanded memory space in environments including virtual machines
US8533686B2 (en) Methods and systems for porting Sysprof
Fleming et al. Improving the schedulability of mixed criticality cyclic executives via limited task splitting
EP3916540A1 (en) Compiling monoglot function compositions into a single entity
JP2003241967A (ja) プログラム実行装置およびその方法、並びにそこで実行されるプログラム
KR20070009777A (ko) 객체 관리 시스템 및 방법
CN117270822A (zh) 一种不中断应用服务的Java代码布局优化方法
JP2020113244A (ja) Rtosアプリケーションデバッグ装置及びrtosアプリケーションデバッグ方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130802

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: 20130903

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130927

R150 Certificate of patent or registration of utility model

Ref document number: 5379779

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150