JP2018067331A - メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数 - Google Patents

メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数 Download PDF

Info

Publication number
JP2018067331A
JP2018067331A JP2017234927A JP2017234927A JP2018067331A JP 2018067331 A JP2018067331 A JP 2018067331A JP 2017234927 A JP2017234927 A JP 2017234927A JP 2017234927 A JP2017234927 A JP 2017234927A JP 2018067331 A JP2018067331 A JP 2018067331A
Authority
JP
Japan
Prior art keywords
component
heap
memory
representation
call stack
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
JP2017234927A
Other languages
English (en)
Other versions
JP6637022B2 (ja
Inventor
ルッコ,スティーヴン
Lucco Steven
マン,カーティス・チェン−チェン
Cheng-Cheng Man Curtis
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of JP2018067331A publication Critical patent/JP2018067331A/ja
Application granted granted Critical
Publication of JP6637022B2 publication Critical patent/JP6637022B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】無難なガベージ・コレクション・アルゴリズムについての形態を提供する。
【解決手段】コール・スタックに含まれるルート・オブジェクトを特定する。コール・スタックは、整数およびポインターを含む600。整数表現にタグを付けて、タグのないポインター表現から区別可能にする610。その後の追跡がポインター表現に対して行われ、整数表現に対しては飛ばされるように、ルート・オブジェクトを対応するメモリー位置まで追跡する620。次いで、コール・スタックによって到達不可能なオブジェクトに割り当てられているメモリーを解放する630。
【選択図】図6

Description

従来技術
[0001] 従来のシステムに関する背景として、計算デバイスは従前より情報および関連するアプリケーションを格納していることを注記しておく。これらの目的のために、効率的なメモリー管理方式を実現することが、計算能力向上を達成するためには望ましい。自動メモリー管理方式の開発は、特に、手作業によるメモリー管理方式よりも望ましかった。例えば、ガベージ・コレクション・アルゴリズムは、もはや特定のプログラムによって使用されなくなったオブジェクトが占有するメモリーを取り戻そうとする自動メモリー管理方式である。
[0002] 追跡ガベージ・コレクターは、最も一般的なタイプのガベージ・コレクターである。追跡ガベージ・コレクターは、最初に、どのオブジェクトが到達可能か(または潜在的に到達可能か)判断し、次いで全ての残りのオブジェクトを破棄する。到達可能なオブジェクトは、プログラム環境において何らかの変数が存在するオブジェクトであって、直接的にまたは他の到達可能なオブジェクトからの参照を介してその変数に通じるオブジェクトとして定めることができる。更に正確に言うと、オブジェクトは通常2つの方法で到達可能である。第1に、ルートとして知られる、1組の区別されたオブジェクトは、到達可能であると見なされる。通例、これらは、コール・スタック(即ち、現在呼び出されている関数における全てのローカル変数およびパラメータ)におけるいずれかの場所から参照されたオブジェクト、および任意のグローバル変数を含む。第2に、到達可能なオブジェクトから参照されるものはいずれも、それ自体到達可能であると見なされる。
[0003] 参照タイプおよび即値タイプ双方のことばで表される従来のガベージ・コレクターに伴う厄介な問題は、ガベージ・コレクターが、コール・スタックにおけるどの変数が正規値(例えば、整数)であり、どの変数が参照(例えば、ポインター)であるのか区別することである。このような区別は、区別を目的とするようなシステムにおいては有用であろう。何故なら、整数および参照は、区別しないと、メモリーにおいて表現されたときに、同じように見えるからである。これに関して、ガベージ・コレクターは、この区別を使用して、特定のエレメントを参照として扱いそしてその参照に従うべきか否か判断し、またはそれが単に原始値であるか否か判断することができる。
[0004] 以上で述べた今日のメモリー管理方式の欠点は、単に、従来のシステムの問題の一部の概観を与えることを意図するに過ぎず、網羅的であることを意図するのではない。技術的現状に伴う他の問題、および種々の非限定的な実施形態の一部の対応する利点は、以下の詳細な説明を検討することにより、一層明白になるであろう。
[0005] 以下に続く更に詳細な説明および添付図面における例示的な非限定の実施形態の種々の形態の基本的なまたは総合的な理解を可能にするのに役立てるために、簡素化した摘要を設ける。この摘要は、しかしながら、広範なまたは網羅的な全体像であることは意図していない。代わりに、この摘要の唯一の目的は、以下に続く種々の実施形態の更に詳細な説明に対する序説として、一部の例示的非限定的実施形態に関する概念を紹介することである。
[0006] 1つ以上の実施形態および対応する開示によれば、メモリー管理のための無難な(conservative)ガベージ・コレクションに関して、種々の非限定的な形態について説明
する。このような一形態では、無難なガベージ・コレクション・アルゴリズム内において整数にタグを付ける方法を提供する。この方法は、コール・スタックに含まれるルート・オブジェクトを特定するステップを含むことができる。コール・スタックは、整数表現およびポインター表現を含むことができる。更に、この実施形態は、タグ付き整数表現が、タグなしポインター表現から区別可能なように、整数表現にタグ付けするステップも含むことができる。また、この方法は、ルート・オブジェクトを対応する1組のメモリー位置まで追跡するステップも含むことができる。この特定実施形態では、後続の追跡は、タグなしポインター表現に対して行われ、一方、タグ付き整数表現に対しては、後続の追跡は飛ばされる。次いで、この方法は、更に、コール・スタックによって到達不可能な1組のオブジェクトに割り当てられているメモリーを解放するステップも含むことができる。
[0007] 他の形態では、無難なガベージ・コレクション・アルゴリズムを、タグ付き整数を用いて実現するように構成されたメモリー管理デバイスを開示する。このような実施形態内では、メモリー管理デバイスは、メモリーに格納されているコンピューター実行可能コンポーネントを実行するように構成されたプロセッサーを含む。コンピューター実行可能コンポーネントは、スキャニング・コンポーネント、タギング・コンポーネント、追跡コンポーネント、およびリサイクリング・コンポーネントを含む。スキャニング・コンポーネントは、コール・スタックに含まれるルート・オブジェクトを特定するように構成されている。コール・スタックは、整数表現およびポインター表現を含む。タギング・コンポーネントは、タグ付き整数表現がタグなしポインター表現から区別できるように、整数表現にタグ付けするように構成されており、一方追跡コンポーネントは、ルート・オブジェクトを対応する1組のメモリー位置まで追跡するように構成されている。この実施形態では、追跡コンポーネントは、タグなしポインター表現に対して後続の追跡を行うように構成されており、後続の追跡は、タグ付き整数表現に対しては飛ばされる。リサイクリング・コンポーネントは、コール・スタックによって到達不可能な1組のオブジェクトに割り当てられているメモリーを解放するように構成されている。
[0008] 更に他の形態では、無難なガベージ・コレクション・アルゴリズム内において整数にタグ付けするためのコンピューター読み取り可能記憶媒体を開示する。このような実施形態内では、このコンピューター読み取り可能記憶媒体は、少なくとも1つのプロセッサーに種々の動作を実行させるコンピューター読み取り可能命令を含む。例えば、このような動作は、コール・スタックに関連するオブジェクト・グラフにタグ付けする動作、およびコール・スタックの実行中にオブジェクトのヒープ(heap)を生成する動作を含む。ここで、タグ付きオブジェクト・グラフに含まれるルート・オブジェクトは、タグ付き整数表現と、タグなしポインター表現とを含み、一方オブジェクトのヒープは、コール・スタックの内既実行部分に含まれるオブジェクトを含む。更に、この実施形態は、コール・スタックの内未実行部分に含まれる実行されていないオブジェクトを、ヒープにおける対応するメモリー位置まで追跡する動作も含む。この特定実施形態では、後続の追跡は、タグなしポインター表現に対して行われ、タグ付き整数表現に対しては飛ばされる。次いで、ヒープにおいて到達不可能なオブジェクトに対応するメモリー位置はクリアされる。ここで、到達不可能なオブジェクトとは、コール・スタックの未実行部分が到達できないということである。
[0009] 他の実施形態および種々の非限定的な例、シナリオ、ならびに実現例について、以下で更に詳しく説明する。
[0010] 添付図面を参照して種々の非限定的な実施形態について更に説明する。図面において、
図1は、一実施形態にしたがって無難なガベージ・コレクション・アルゴリズムを実現し易くするシステム例を示す。 図2は、一実施形態によるオブジェクトのヒープの一例を示す図である。 図3は、一実施形態によるオブジェクト・グラフの一例を示す図である。 図4は、一実施形態によるメモリー解放の一例を示す図である。 図5は、一実施形態によるメモリー管理デバイスの一例を示すブロック図である。 図6は、一実施形態にしたがって無難なガベージ・コレクション・アルゴリズムを実現する非限定的な実施形態例を示す流れ図である。 図7は、一実施形態によるリソース管理ユニットの一例を示すブロック図である。 図8は、一実施形態にしたがって整数にタグ付けする非限定的な実施形態例を示す流れ図である。 図9は、本明細書において記載する種々の実施形態を実現することができる非限定的なネットワーク環境例を示すブロック図である。 図10は、本明細書において記載する種々実施形態の1つ以上の形態を実現することができる、非限定的な計算システムまたは動作環境例を表すブロック図である。
全体像
[0021] 背景において説明したように、コール・スタックにおいて整数とポインターとの間で区別するガベージ・コレクション・アルゴリズムを実現することが望ましい。種々の実施形態では、ネーティブ・コードの互換性を中心に、メモリー管理を設計し直す。一形態では、スクリプト・オブジェクトは管理を少なくしたオブジェクトとし、更に正しくは、メモリーのネーティブな部分 (native piece)として、オブジェクト間における参照
のカウンティング(counting)を排除する。更に、無難なガベージ・コレクション・アルゴリズムを実現し、ポインターであるあらゆるものが既知であるとは仮定しない。例えば、共通言語ランタイム(CLR)ガベージ・コレクターでは、スタックは強く型が決められる(type)。しかしながら、ネーティブ・コード、例えば、Cコード、およびスクリプト・コードでは、何がスタックにあるのか分からない。これに関して、参照カウンティング・モデルを利用する代わりに、オブジェクト同士を直接相互作用させることが考えられる。
[0022] 本明細書において記載する種々実施形態は、無難なガベージ・コレクション・アルゴリズム内において整数にタグ付けすることを対象とする。この目的のために、本明細書において開示する形態は、偽のポインターを生成しそうにない文書オブジェクト・モデルに対して、スクリプト(例えば、ジャヴァスクリプト)の実行を容易にすることを注記しておく。更に、本明細書において開示する形態は、偽のポインターの確率を低下させる。何故なら、タグなしポインターおよびタグ付きポインターは容易に区別できるからである。
タグ付き整数および無難なガベージ・コレクション
[0023] ウェブ・ブラウズ体験が、最小限の対話処理に抑えた平面的な情報の提示から、クライアント側における対話処理が多く一層豊富なアプリケーションまたはアプレットに発展するに連れて、様々な問題が持ち上がっている。更に一般的には、ウェブ・ブラウズ体験は、情報表示と、ディスプレイ上のオブジェクトとの増々豊富になった対話処理との混成に発展している。この発展に伴う特定の課題は、古い文書オブジェクト・モデル(DOM)をジャヴァスクリプト・オブジェクトのような流動的にスクリプト・コードを扱う体験に適応させることに基づく。文書オブジェクト・モデルは、主にクライアントにおけるネーティブ・コードに基づく平面的な情報の提示のために本来設計されたのであった。
[0024] 一層望ましいユーザー体験を促進するためには、速度の向上が特に重要である。例えば、過去のフライ・アウト・メニュー(fly out menu)では、サーバーとの通信に基づく遅延によって、ウェブ体験が途切れ途切れになる(flicker)。しかしながら、スクリ
プトは、小さなプログラムが、サーバーに戻ることなく、その場でDOMを変更することを可能にする。人がサーバーに戻ることなくその場でもっと多くのことをしたくなるに連れて、スクリプト・コードの実行を速くすることが課題となる。
[0025] ユーザー体験は、DOMを効果的にスクリプトする(scripting)ことによって
大きく影響されるので、対話速度を最大限高めるためには、DOMを出来るだけ速く変化させることが望ましい。従来では、スクリプティング・エンジンとDOMのネーティブ・クラスとの間の通信は乏しかった。これは、1組のインターフェース、例えば、iDispatch、iActiveScript等を含むオブジェクト・リンキングおよび埋め込み(OLE)自動化の使用のためであるが、これは任意のオブジェクトをスクリプト可能にする。しかしながら、このような方法は遅く、このために改良が望まれる。したがって、本明細書において開示する形態は、無難なガベージ・コレクション・アルゴリズム内において整数にタグ付けすることによって、スクリプト実行速度を向上させることを目的とする。
[0026] 図1は、一実施形態にしたがって無難なガベージ・コレクション・アルゴリズムを実現し易くするシステム例を示す。図示のように、システム100はメモリー管理ユニット110を含むことができる。メモリー管理ユニット110は、メモリー120に通信可能に結合されている。一形態では、メモリー管理ユニット110は、メモリー120内のメモリー空間を管理するために、無難なガベージ・コレクション・アルゴリズムを実現するように構成されている。更に、メモリー管理ユニット110は、スクリプト112の実行に関連するタグ付きオブジェクト・グラフ114を生成するように構成されている。例えば、スクリプト112は、DOMに対して実行されるジャヴァスクリプトであってもよく、このジャヴァスクリプトは、メモリー120におけるメモリー空間の割り当てを要求する種々のオブジェクトを含む。一特定実施形態では、メモリー120内において整数とポインターとの間で区別し易くするために、整数値に対応するスクリプト・オブジェクトは、メモリー管理ユニット110によってタグ付けされ、タグ付きオブジェクト・グラフ114に含まれる。
[0027] 一形態では、スクリプト・オブジェクトに割り当てられるメモリーは、このようなオブジェクトをヒープに格納することを含む。次に図2を参照すると、一実施形態によるオブジェクトのヒープの一例のブロック図が示されている。図示のように、ヒープ200は、利用可能なメモリー210を含むことができ、種々のオブジェクト220、230、240、250、260、および270に対応して、メモリーが割り当てられている。この特定の例では、オブジェクト240および270はポインター値に対応し、一方、オブジェクト220、230、250、および260は整数値に対応する。即ち、オブジェクト240は、オブジェクト230によって表される整数値を参照するポインター値であり、一方オブジェクト270は、オブジェクト260によって表される整数値を参照するポインター値である。
[0028] これに関して、整数値に対応するスクリプト・オブジェクトにはタグ付けし、これらをポインター値から容易に区別可能にすることができる。次に図3を参照すると、ヒープにおけるタグ付きオブジェクト/タグなしオブジェクトのマッピングを容易にするオブジェクト・グラフの一例を示す図が用意されている。図示のように、オブジェクト・グラフ300は、未実行コール・スタック部分310に含まれるオブジェクトをヒープ320にマッピングする。これらおよび関連する目的のために、ヒープ320および利用可能なメモリー330は、それぞれ、ヒープ200および利用可能なメモリー210と総じて似ていることを注記しておく。
[0029] 一形態では、オブジェクト・グラフ300は、ヒープ320におけるどのオブジェクトが、未実行コール・スタック部分310によって到達可能であるか判断するために利用される。即ち、未実行コール・スタック部分310に含まれるルート・オブジェクトは、ヒープ320における対応するメモリー位置まで追跡され、整数値に対応するルート・オブジェクトにタグ付けする。次いで、ルート・オブジェクトのその後の追跡は、到達可能なタグなしポインター値に対してのみ実行して、これらのポインター値によって参照されている到達可能なオブジェクトを特定することが考えられる。逆に、その後の追跡は、到達可能なタグ付き整数値に対しては飛ばされる。この特定例では、到達可能なオブジェクト390は、ポインター値に対応するルート・オブジェクトであるので、これはタグが付けられていない。したがって、その後の追跡は、到達可能なオブジェクト390に対して実行され、整数値に対応する到達可能なオブジェクト380を特定する。しかしながら、その後の追跡は、到達可能なオブジェクト340および370に対しては飛ばされる。何故なら、これらは、タグ付き整数値に対応するルート・オブジェクトであるからである。
[0030] 尚、オブジェクト・グラフ300は、未実行コール・スタック部分310によって到達不可能なオブジェクトを特定するために利用できることを注記しておく。この特定例では、到達不可能なオブジェクト350および360は、未実行コール・スタック部分310内にあるルート・オブジェクトに対応せず、これらが到達可能なポインター・オブジェクトによって参照されてもいないので、到達不可能であると見なされる。
[0031] 到達不可能なオブジェクトを特定すると、このようなオブジェクトに割り当てられているメモリーをクリアすることができる。次に図4を参照すると、一実施形態によるメモリー解放の一例を示す図が用意されている。図示のように、オブジェクト・グラフ400はヒープ420を含む。このヒープ420は、ヒープ200および320と総じて似ている。ヒープ420は、到達不可能なオブジェクト350および360に以前に割り当てられたメモリーの解放を示す。即ち、ヒープ420は、ここでは、利用可能なメモリー430に加えて、解放されたメモリー450および460を含む。しかしながら、一形態では、到達可能なオブジェクト440、470、480、および490は、それらの元の格納位置に保存される(即ち、ヒープ420は潰されない)。
[0032] 次に図5を参照すると、ブロック図は、種々の形態にしたがって無難なガベージ・コレクション・アルゴリズムを実現するように構成されているメモリー管理ユニットの一例を示す。図示のように、メモリー管理ユニット500は、プロセッサー・コンポーネント510、メモリー・コンポーネント520、スキャニング・コンポーネント530、タギング・コンポーネント540、追跡コンポーネント550、およびリサイクリング・コンポーネント560を含むことができる。
[0033] 一形態では、プロセッサー・コンポーネント510は、複数の関数の内任意のものを実行することに関するコンピューター読み取り可能命令を実行するように構成されている。プロセッサー・コンポーネント510は、メモリー管理ユニット500から伝達される情報を分析すること、および/またはメモリー・コンポーネント520、スキャニング・コンポーネント530、タギング・コンポーネント540、追跡コンポーネント550、および/またはリサイクリング・コンポーネント560によって利用することができる情報を生成することを専用とする1つのプロセッサーまたは複数のプロセッサーとすることができる。加えてまたは代わりに、プロセッサー・コンポーネント510は、メモリー管理ユニット500の1つ以上のコンポーネントを制御するように構成することができる。
[0034] 他の形態では、メモリー・コンポーネント520は、プロセッサー・コンポーネント510に結合されており、プロセッサー・コンポーネント510によって実行されるコンピューター読み取り可能命令を格納するように構成されている。また、メモリー・コンポーネント520は、スキャニング・コンポーネント530、タギング・コンポーネント540、追跡コンポーネント550、および/またはリサイクリング・コンポーネント560の内任意のものによって生成されたデータを含む、複数の他のタイプのデータの内任意のものを格納するように構成することもできる。メモリー・コンポーネント520は、ランダム・アクセス・メモリー、バッテリ・バックアップ・メモリー、ハード・ディスク、磁気テープ等としての構成を含む、複数の異なる構成で構成することができる。また、圧縮および自動バックアップ、例えば、独立ドライブの冗長アレイ構成の使用というような、種々の機構をメモリー・コンポーネント520に実現することもできる。
[0035] 図示のように、メモリー管理ユニット500はスキャニング・コンポーネント530を含むこともできる。このような実施形態内では、スキャニング・コンポーネント530は、コール・スタックに含まれるルート・オブジェクトを特定するように構成されている。コール・スタックは、整数表現およびポインター表現を含む。ここでは、このようなコール・スタックが、特定のオブジェクト・モデルに対して実行されるスクリプトと関連付けられると考える。例えば、コール・スタックは、ジャヴァスクリプトのコンパイル(compilation)と関連付けることができ、これは実行中に文書オブジェクト・モデルを
変更し易くする。
[0036] 更に、メモリー管理ユニット500は、図示のように、タギング・コンポーネント540も含むことができる。タギング・コンポーネント540は、コール・スタックに含まれる整数表現にタグを付けるように構成されている。ここでは、整数のタグ付けは、タグ付き整数表現がタグなしポインター表現から容易に区別可能となるように行われることを注記しておく。この目的のために、更に、タギング・コンポーネント540は、複数の方法の内任意のもので整数にタグを付けるように構成することができる。例えば、タギング・コンポーネント540は、整数表現を異なるデータ構造に変換するように構成することができる。一特定実施形態では、このような変換は、異なるデータ構造における少なくとも1つのビットをタグ専用にするように、タギング・コンポーネント540を構成させることを含むことができる。
[0037] 一形態では、メモリー管理デバイス500は、更に、追跡コンポーネント550も含む。このような実施形態では、追跡コンポーネント550は、スキャニング・コンポーネント530によって特定されたルート・オブジェクトを、対応する1組のメモリー位置まで追跡するように構成されている。ルート・オブジェクトの初期追跡の後、関連オブジェクトのその後の追跡が実行されると考えられる。しかしながら、一特定実施形態では、その後の追跡は、タグなしポインター表現に対してのみ実行され、タグ付き整数表現に対しては飛ばされる。
[0038] 更に他の形態では、メモリー管理デバイス500はリサイクリング・コンポーネント560も含む。リサイクリング・コンポーネント560は、コール・スタックによって到達不可能な1組のオブジェクトに割り当てられているメモリーを解放するように構成されている。一特定実施形態では、リサイクリング・コンポーネント560は、コール・スタックによってコールされたオブジェクトをヒープに載せるように構成することができる。このような実施形態内では、リサイクリング・コンポーネント560は、更に、ヒープのサイズがしきい値を超えるか否かに基づいて、ガベージ・コレクション・アルゴリズムを開始するように構成することができる。他の実施形態では、リサイクリング・コンポーネント560は、それぞれ、到達可能なオブジェクトをヒープの元の記憶位置に保存するように構成することができる。例えば、リサイクリング・コンポーネント560は、ヒープ内における1組の固定境界にしたがって、ヒープ・オブジェクトの分離を維持するように構成することができる。
[0039] 図6は、一実施形態にしたがって無難なガベージ・コレクション・アルゴリズムを実現する非限定的な実施形態例を示す流れ図である。600において、コール・スタックに含まれるルート・オブジェクトを特定する。コール・スタックは、整数表現およびポインター表現を含む。次に、610において、タグ付き整数表現が、タグなしポインター表現から区別できるように、整数表現にタグを付ける。次いで、その後の追跡がポインター表現に対して実行され、整数表現に対しては飛ばされるように、620において、対応する1組のメモリー位置までルート・オブジェクトを追跡する。630において、コール・スタックによって到達不可能なオブジェクトに割り当てられているメモリーを解放する。
[0040] 次に図7を参照すると、ブロック図は、種々の形態にしたがって整数にタグを付けるように構成されているリソース管理ユニットの一例を示す。図示のように、リソース管理ユニット700は、プロセッサー・コンポーネント710、メモリー・コンポーネント720、タギング・コンポーネント730、ヒープ・コンポーネント740、追跡コンポーネント750、解放コンポーネント760、監視コンポーネント770、およびグラフィング・コンポーネント780を含む。
[0041] メモリー管理ユニット500におけるプロセッサー・コンポーネント510と同様、プロセッサー・コンポーネント710は、複数の関数の内任意のものを実行することに関連するコンピューター読み取り可能命令を実行するように構成されている。プロセッサー・コンポーネント710は、リソース管理ユニット700から伝達される情報を分析すること、および/またはメモリー・コンポーネント720、タギング・コンポーネント730、ヒープ・コンポーネント740、追跡コンポーネント750、解放コンポーネント760、監視コンポーネント770、および/またはグラフィング・コンポーネント780によって利用することができる情報を生成することを専用とする1つのプロセッサーまたは複数のプロセッサーとすることができる。加えてまたは代わりに、プロセッサー・コンポーネント710は、リソース管理ユニット700の1つ以上のコンポーネントを制御するように構成することができる。
[0042] 他の形態では、メモリー・コンポーネント720は、プロセッサー・コンポーネント710に結合されており、プロセッサー・コンポーネント710によって実行されるコンピューター読み取り可能命令を格納するように構成されている。また、メモリー・コンポーネント720は、タギング・コンポーネント730、ヒープ・コンポーネント740、追跡コンポーネント750、解放コンポーネント760、監視コンポーネント770、および/またはグラフィング・コンポーネント780の内任意のものによって生成されるデータを含む、複数の他のタイプのデータの内任意のものを格納するように構成することもできる。ここでは、メモリー・コンポーネント720はメモリー管理ユニット510におけるメモリー・コンポーネント520に似ていることを注記しておく。したがって、以上で述べたメモリー・コンポーネント520の機構/構成はいずれも、メモリー・コンポーネント720にも適用可能であることが認めることができる。
[0043] 図示のように、リソース管理ユニット700もタギング・コンポーネント730を含むことができる。このような実施形態では、タギング・コンポーネント730は、コール・スタックに関連するオブジェクト・グラフにタグを付けるように構成される。ここでは、タグ付きオブジェクト・グラフに含まれるルート・オブジェクトは、タグ付き整数表現、およびタグなしポインター表現を含むことができることは、注記してしかるべきである。実施形態の中には、更に、リソース管理ユニット700がグラフィング・コンポーネント780も含むことができ、グラフィング・コンポーネント780は、タギング・コンポーネント730によってタグ付きオブジェクト・グラフを生成するように構成されている場合もあることも注記してしかるべきである。
[0044] 一形態では、リソース管理ユニット700は、ヒープに含まれるオブジェクトを管理するように構成されている。このような管理をし易くするために、リソース管理ユニット700はヒープ・コンポーネント740を含むことができる。ヒープ・コンポーネント740は、コール・スタックの実行中にオブジェクトのヒープを生成するように構成されている。この特定実施形態では、このオブジェクトのヒープが、コール・スタックの既実行部分に含まれるオブジェクトを含むことができると考えられる。
[0045] 他の形態では、リソース管理ユニット700は、更に、追跡コンポーネント750も含むことができる。このような実施形態内では、追跡コンポーネント750は、コール・スタックの未実行部分に含まれている未実行オブジェクトを、ヒープにおける対応するメモリー位置まで追跡するように構成されている。ここでは、メモリー管理デバイス500における追跡コンポーネント550と同様に、追跡コンポーネント750は、コール・スタックのルート・オブジェクトの初期追跡の後、関連オブジェクトのその後の追跡を実行するように構成することができると考えられる。更に、このようなその後の追跡は、タグなしポインター表現に対してのみ実行され、タグ付き整数表現に対しては飛ばされると考えられる。
[0046] 図示のように、リソース管理ユニット700は、解放コンポーネント760も含むことができる。このような実施形態内では、解放コンポーネント760は、ヒープにおいて、コール・スタックの未実行部分によって到達不可能であると見なされるオブジェクトに対応するメモリー位置をクリアするように構成されている。一形態では、解放コンポーネント760は、更に、コール・スタックの未実行部分によって到達可能なオブジェクトの記憶を、それぞれ、ヒープ内におけるそれらの元のメモリー位置に保存するように構成することもできる。他の形態では、リソース管理ユニット700は監視コンポーネント770も含むことができる。監視コンポーネント770は、コール・スタックの実行中にヒープのサイズを監視するように構成されている。この特定実施形態では、解放コンポーネント760は、ヒープ・サイズが特定のしきい値を超えたことに基づいて、到達不可能なオブジェクトに割り当てられているメモリーのクリア処理を誘起するように構成することができる。
[0047] 図8は、一実施形態にしたがって整数にタグを付ける非限定的な実施形態例を示す流れ図である。800において、タグ付きオブジェクト・グラフに含まれるルート・オブジェクトがタグ付き整数表現およびタグなしポインター表現を含むように、コール・スタックに関連するオブジェクト・グラフにタグが付けられる。810において、次に、オブジェクトのヒープをコール・スタックの実行中に生成する。このヒープは、コール・スタックの実行部分に含まれるオブジェクトを含む。次に、820において、コール・スタックの未実行部分に含まれる未実行オブジェクトを、ヒープにおける対応するメモリー位置まで追跡する。この特定実施形態では、その後の追跡は、ポインター表現に対してのみ実行され、整数表現に対しては実行されない。次いで、830において、コール・スタックの未実行部分によって到達不可能なヒープ・オブジェクトに対応するメモリー位置をクリアする。
ネットワークおよび分散環境例
[0048] 本明細書において説明した、無難なガベージ・コレクション・アルゴリズム内において整数にタグ付けする種々の実施形態は、任意のコンピューターあるいは他のクライアントまたはサーバー・デバイスと共に実現でき、コンピューター・ネットワークの一部としてまたは分散型計算環境において配備することができ、任意の種類のデータ・スト
アに接続できることは、当業者には認めることができよう。これに関して、本明細書において説明した種々の実施形態は、任意の数のメモリーまたは記憶ユニット、ならびに任意の数の記憶ユニットに跨がって実行される任意の数のアプリケーションおよびプロセスを有する任意のコンピューター・システムまたは環境において実現することができる。これは、ネットワーク環境または分散型計算環境において配備されたサーバー・コンピューターおよびクライアント・コンピューターが設けられ、リモートまたはローカル・ストレージを有する環境を含むが、これに限定されるのではない。
[0049] 図9は、ネットワークまたは分散型計算環境の一例の非限定的な模式図を示す。この分散型計算環境は、計算オブジェクトまたはデバイス910、912等、および計算オブジェクトまたはデバイス920、922、924、926、928等を含み、これらは、アプリケーション930、932、934、936、938で表されるように、プログラム、方法、データ・ストア、プログラマブル・ロジック等を含むことができる。尚、計算オブジェクトまたはデバイス910、912等、および計算オブジェクトまたはデバイス920、922、924、926、928等は、PDA、オーディオ/ビデオ・デバイス、移動体電話機、MP3プレーヤー、ラップトップ等のような、異なるデバイスを含んでもよいことは認めることができよう。
[0050] 各計算オブジェクトまたはデバイス910、912等、および計算オブジェクトまたはデバイス920、922、924、926、928等は、直接または間接的に、通信ネットワーク940を介して、1つ以上の他の計算オブジェクトまたはデバイス910、912等、および計算オブジェクトまたはデバイス920、922、924、926、928等と通信することができる。図9では1つのエレメントとして示されているが、ネットワーク940は、図9のシステムにサービスを提供する他の計算オブジェクトおよび計算デバイスも含むことができ、および/または図示されていない複数の相互接続されたネットワークを表すこともできる。各計算オブジェクトまたはデバイス910、921等、または920、922、924、926、928等は、アプリケーション930、932、934、936、938のようなアプリケーションも含むことができる。これらのアプリケーションは、API、あるいは種々の実施形態にしたがって提供される任意のプラットフォームからのサービスとして情報のためのインフラストラクチャーとの通信またはその実現に適した他のオブジェクト、ソフトウェア、ファームウェア、および/またはハードウェアを利用することもできる。
[0051] 分散型計算環境をサポートする種々のシステム、コンポーネント、およびネットワーク構成がある。例えば、計算システムを互いに有線システムまたはワイヤレス・システムによって、ローカル・ネットワークまたは広域に分散されたネットワークによって接続することができる。現在では、多くのネットワークがインターネットに結合されており、インターネットは、広く分散された計算のためのインフラストラクチャーを提供し、多くの異なるネットワークを内包するが、種々の実施形態において説明した技法に付帯して行われる通信例には、任意のネットワーク・インフラストラクチャーを使用することができる。
[0052] つまり、クライアント/サーバー、ピア−ツー−ピア、または混成アーキテクチャーのような、ネットワーク・トポロジーおよびネットワーク・インフラストラクチャーのホストを利用することができる。クライアント/サーバー・アーキテクチャー、特にネットワーク・システムでは、クライアントは、通常、他のコンピューター、例えば、サーバーによって提供される共有ネットワーク・リソースにアクセスするコンピューターである。図9の例示では、非限定的な例として、計算オブジェクトまたはデバイス920、922、924、926、928等はクライアントであると考えることができ、計算オブジェクトまたはデバイス910、912等は、サーバーとして考えることができ、計算オ
ブジェクトまたはデバイス910、912等が、計算オブジェクトまたはデバイス920、922、924、926、928等からのデータの受信、データの格納、データの処理、計算オブジェクトまたはデバイス920、922、924、926、928等へのデータの送信というようなデータ・サービスを提供するが、状況に依っては、任意のコンピューターがクライアント、サーバー、または双方になると考えることができる。これらの計算デバイスの内任意のものが、データを処理し、1つ以上の実施形態について本明細書において説明したようなメモリー管理および関連技法に係わる可能性があるサービスまたはタスクを要求することができる。
[0053] サーバーとは、通例、インターネットまたはワイヤレス・ネットワーク・インフラストラクチャーのような、リモートまたはローカル・ネットワークを介してアクセス可能なリモート・コンピューター・システムである。クライアント・プロセスは、第1コンピューター・システムにおいてアクティブになることができ、サーバー・プロセスは第2コンピューター・システムにおいてアクティブになることができ、通信媒体を介して互いに通信し、こうして分散機能を設け、複数のクライアントが、サーバーの情報収集能力を利用することを可能にする。ユーザー・プロファイリング(user profiling)にしたがって利用される任意のソフトウェア・オブジェクトは、単独で提供することができ、あるいは複数の計算デバイスまたはオブジェクトに跨って分散させることもできる。
[0054] 通信ネットワーク/バス940がインターネットであるネットワーク環境では、例えば、計算オブジェクトまたはデバイス910、912等はウェブ・サーバーであることができ、計算オブジェクトまたはデバイス920、922、924、926、928等は、HTTPのような複数の既知のプロトコルの内任意のものによって、これと通信する。前述のように、計算オブジェクトまたはデバイス910、912等が計算オブジェクトまたはデバイス920、922、924、926、928等として役割を果たすこと、またはその逆であってもよく、これは分散型計算環境の特徴であると言えよう。
計算デバイス例
[0055] 前述のように、本明細書において説明した種々の実施形態は、無難なガベージ・コレクション・アルゴリズム内において整数にタグを付けるためのインフラストラクチャーを実現することが望ましいと考えられる任意のデバイスに適用される。したがって、ハンドヘルド、ポータブルおよび他の計算デバイス、ならびにあらゆる種類の計算オブジェクトが、本明細書において説明した種々の実施形態と共に使用できると考えられる、即ち、デバイスがタグ付き整数を無難なガベージ・コレクション・アルゴリズムに実現することに関連して何らかの機能を提供することができる場合にはいつでも、本明細書において説明した種々の実施形態と共に使用できると考えられることは理解されよう。したがって、図10において以下で説明する以下の汎用リモート・コンピューターは、一例に過ぎず、本開示の実施形態は、ネットワーク/バス相互動作可能性および相互作用を有する任意のクライアントによって実現することができる。
[0056] 必須ではないが、実施形態の内任意のものは、デバイスまたはオブジェクトのためのサービスの開発者による使用のために、部分的にオペレーティング・システムを介して実現すること、および/または動作可能なコンポーネント(1つまたは複数)と共に動作するアプリケーション・ソフトウェアに含まれることができる。ソフトウェアは、クライアント・ワークステーション、サーバー、または他のデバイスというような、1つ以上のコンピューターによって実行される、プログラム・モジュールのような、コンピューター実行可能命令という一般的なコンテキストにおいて説明することができる。ネットワーク相互作用は、種々のコンピューター・システム構成およびプロトコルによって実施できることは、当業者には認められよう。
[0057] つまり、図10は、実施形態の1つ以上を実現することができる、適した計算
システム環境1000の一例を示す。しかし、以上で明確にしたように、計算システム環境1000は適した計算環境の一例に過ぎず、実施形態のいずれについても、その使用範囲や機能に対して限定を示唆することは全く意図していない。計算環境1000は、動作環境例1000に示すコンポーネントの内任意の1つまたはその組み合わせに関して、何らかの依存性または要件を有するように解釈してはならない。
[0058] 図10を参照すると、本明細書における1つ以上の実施形態を実現するリモート・デバイス例は、ハンドヘルド・コンピューター1010の形態とした、汎用計算デバイスを含むことができる。ハンドヘルド・コンピューター1010のコンポーネントは、処理ユニット1020、システム・メモリー1030、およびシステム・バス1021を含むことができるが、これらに限定されるのではない。システム・バス1021は、システム・メモリーを含む種々のシステム・コンポーネントを処理ユニット1020に結合する。
[0059] コンピューター1010は、通例、種々のコンピューター読み取り可能媒体を含み、コンピューター1010によってアクセスすることができる入手可能な媒体の内任意のものとすることができる。システム・メモリー1030は、リード・オンリー・メモリー(ROM)および/またはランダム・アクセス・メモリー(RAM)のような、揮発性および/または不揮発性メモリーの形態とした、コンピューター記憶媒体を含むことができる。一例として、そして限定ではなく、メモリー1030は、オペレーティング・システム、アプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも含むことができる。ソフトウェアは、デジタル・バーサタイル・ディスク(DVD)、コンパクト・ディスク(CD)、または他のリムーバブル・ストレージにも具体化することができる。
[0060] ユーザーは、入力デバイス1040を介してコマンドおよび情報をコンピューター1010に入力することができる。モニターまたは他のタイプのディスプレイ・デバイスも、出力インターフェース1050のようなインターフェースを介して、システム・バス1021に接続されている。モニターに加えて、コンピューターは、スピーカーおよびプリンターのような、他の周辺出力デバイスも含むことができ、これらの出力デバイスは、出力インターフェース1050を介して接続することができる。
[0061] コンピューター1010は、リモート・コンピューター1070のような、1つ以上の他のリモート・コンピューターへの論理接続を使用して、ネットワーク環境または分散型環境において動作することもできる。リモート・コンピューター1070は、パーソナル・コンピューター、サーバー、ルーター、ネットワークPC、ピア・デバイスまたは他の共通ネットワーク・ノード、あるいは任意の他のリモート媒体消費または送信デバイスとすることができ、コンピューター1010に関して以上で説明したエレメントの内任意のものまたは全てを含むことができる。図10に示す論理接続は、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)のような、ネットワーク1071を含むが、他のネットワーク/バスを含むこともできる。このようなネットワーキング環境は、家庭、事務所、企業規模のコンピューター・ネットワーク、イントラネット、およびインターネットでは極普通である。
[0062] 以上で述べたように、実施形態例について種々の計算デバイス、ネットワーク、および広告アーキテクチャーと関連付けて説明したが、基礎となる概念は、任意のネットワーク・システムおよびメモリーを管理することが望ましい任意の計算デバイスまたはシステムに適用することができる。
[0063] 本明細書において説明した実施形態の内1つ以上を実現する複数の方法があり
、例えば、しかるべきAPI、ツール・キット、ドライバ・コード、オペレーティング・システム、制御、スタンドアロンまたはダウンロード可能なソフトウェア・オブジェクト等があり、これらはアプリケーションおよびサービスがメモリー管理を使用することを可能にする。実施形態は、API(または他のソフトウェア・オブジェクト)の観点から、そして説明した実施形態の内1つ以上にしたがってメモリー管理の装備を容易にするソフトウェアまたはハードウェア・オブジェクトの観点からも考えることができる。本明細書において説明した種々の実現例および実施形態は、全体的にハードウェア、部分的にハードウェアであり部分的にソフトウェア、そしてソフトウェアである形態を有することができる。
[0064] 「一例の」という用語は、本明細書において使用する場合、例、実例、または例示として役割を果たすことを意味する。疑問回避のために、本明細書において開示される主題はこのような例によって限定されないこととする。加えて、本明細書において「例示」と記載される任意の態様または設計(design)は、他の態様または設計よりも好ましいまたは有利であるとは、必ずしも解釈されず、当業者には知られている等価の構造および技法例を除外することを意味するのでもない。更に、「含む」(include)、「有する」、
「含む」(contain)という用語、およびその他の同様の単語が詳細な説明または特許請求
の範囲において使用されている限りでは、このような用語は、疑問回避のために、いずれの追加のまたは他のエレメントも除外しない、開いたつなぎ言葉(open transition word)としての「含む」(comprising)という用語と同様に、包含的であることを意図している。
[0065] 前述のように、本明細書において記載した種々の技法は、ハードウェアまたはソフトウェア、あるいはしかるべきときには、双方の組み合わせによって実現することができる。本明細書において使用する場合、「コンポーネント」、「システム」等の用語は、同様に、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピューター関係エンティティに言及することを意図している。例えば、コンポーネントは、プロセッサーにおいて実行するプロセス、プロセッサー、オブジェクト、エクゼキュータブル、実行のスレッド、プログラム、および/またはコンピューターであってもよいが、これらに限定されるのではない。例示として、コンピューターにおいて実行するアプリケーション、およびこのコンピューターがコンポーネントであることができる。1つ以上のコンポーネントが1つのプロセスおよび/または実行のスレッド内に存在することができ、コンポーネントは、1つのコンピューターに局在すること、および/または2つ以上のコンピューター間で分散されることも可能である。
[0066] 前述のシステムは、数個のコンポーネント間における相互作用に関して説明した。尚、このようなシステムおよびコンポーネントは、これらのコンポーネントまたは指定されたサブ・コンポーネント、指定されたコンポーネントまたはサブ・コンポーネントの一部、および/または追加のコンポーネントを、これらの種々の順列(permutation)お
よび組み合わせにしたがって、含むことができることは認めることができよう。また、サブ・コンポーネントは、親コンポーネント内に含まれるのではなく代わりに、他のコンポーネントに通信可能に結合されたコンポーネントとして実現することもできる(階層的)。加えて、1つ以上のコンポーネントを組み合わせて1つのコンポーネントにして、複合機能を提供することもでき、あるいは数個の別個のサブ・コンポーネントに分割することもでき、統合機能を提供するために、管理レイヤーのような、任意の1つ以上の中間レイヤーを設けて、このようなサブ・コンポーネントに通信可能に結合することもできることは、注記してしかるべきである。また、本明細書において記載したいずれのコンポーネントも、本明細書には具体的に記載されなかったが当業者には一般的に知られている1つ以上の他のコンポーネントと相互作用することもできる。
[0067] 以上で説明したシステム例に関して、開示された主題にしたがって実現することができる方法は、種々の図のフローチャートを参照すると一層よく理解できよう。説明の簡素化という目的に限って、方法は一連のブロック図で示されそして説明されているが、特許請求する主題は、これらのブロックの順序に限定されないことは言うまでもないことであり、認められてしかるべきである。何故なら、一部のブロックは、本明細書において図示および説明したのとは異なる順序で現れることもでき、および/または他のブロックと同時に現れることもできるからである。フローチャートによって非連続的、または分岐したフローが示される場合、種々の他の分岐、フロー・パス、ブロックの順序を実現することができ、同じ結果または同様の結果が得られることは認めることができよう。更に、以下で説明する方法を実現するために、図示したブロック全てが必要ではない場合もある。
[0068] 実施形態の中には、クライアント側の観点が示されているが、疑問回避のために、対応するサーバーの観点も存在することは言うまでもないことであり、その逆も当てはまる。同様に、方法が実施される場合、ストレージと、1つ以上のコンポーネントによってその方法を実施するように構成されている少なくとも1つのプロセッサーとを有する対応するデバイスも提供することができる。
[0069] 以上、種々の図の好ましい実施形態に関連付けて種々の実施形態について説明したが、これらから逸脱することなく同じ機能を実行するために、他の同様の実施形態も使用できること、または変更および追加を記載した実施形態に行うことができることは言うまでもない。更にその上、以上で記載した実施形態の1つ以上の態様は、複数の処理チップまたはデバイスにおいて、またはこれらに跨がって実現するのでもよく、同様に複数のデバイスに跨がってストレージにも作用する(affect)のでもよい。したがって、本発明は、いずれの1つの実施形態にも限定されることはなく、むしろ添付した特許請求の範囲にしたがってその広さおよび範囲を解釈されてしかるべきである。

Claims (15)

  1. 方法であって、
    コール・スタックに含まれたルート・オブジェクトを特定するステップであって、前記ルート・オブジェクトが、整数表現およびポインター表現を含む、ステップと、
    前記整数表現にタグを付けるステップであって、タグ付き整数表現がタグなしポインター表現から区別可能となる、ステップと、
    前記ルート・オブジェクトを対応する1組のメモリー位置まで追跡するステップであって、その後の追跡が前記タグなしポインター表現に対して行われ、前記その後の追跡が前記タグ付き整数表現に対して飛ばされる、ステップと、
    前記コール・スタックによって到達不可能な1組のオブジェクトに割り当てられたメモリーを解放するステップと、
    を含む、方法。
  2. 請求項1記載の方法において、前記タグを付けるステップが、前記整数表現を異なるデータ構造に変換するステップを含む、方法。
  3. 請求項2記載の方法において、前記変換するステップが、前記異なるデータ構造における少なくとも1つのビットをタグ専用にするステップを含む、方法。
  4. 請求項1記載の方法において、前記解放するステップが、到達可能なオブジェクトをそれぞれヒープの元の記憶位置に保存するステップを含む、方法。
  5. 請求項4記載の方法において、前記保存するステップが、前記ヒープ内における1組の固定境界にしたがって、ヒープ・オブジェクトの分離を維持するステップを含む、方法。
  6. 請求項1記載の方法であって、更に、
    前記コール・スタックを実行するステップであって、コールされたオブジェクトがヒープに載せられる、ステップと、
    前記ヒープのサイズをしきい値と比較するステップであって、ガベージ・コレクション・アルゴリズムの開始が、前記ヒープのサイズが前記しきい値を超えるか否かに基づく、ステップと、
    を含む、方法。
  7. 請求項6記載の方法において、前記実行するステップが、ジャヴァスクリプトをコンパイルするステップを含む、方法。
  8. 請求項6記載の方法において、前記実行するステップが、文書オブジェクト・モデルを変更するステップを含む、方法。
  9. メモリー管理デバイスであって、
    コンピューター実行可能コンポーネントが格納されたメモリーと、
    前記メモリーに通信可能に結合されているプロセッサーであって、前記コンピューター実行可能コンポーネントを実行するように構成されたプロセッサーと、
    を含み、前記コンピューター実行可能コンポーネントが、
    コール・スタックに含まれるルート・オブジェクトを特定するように構成されたスキャニング・コンポーネントであって、前記ルート・オブジェクトが整数表現およびポインター表現を含む、スキャニング・コンポーネントと、
    前記整数表現にタグを付けるように構成されたタギング・コンポーネントであって、タグ付き整数表現がタグなしポインター表現から区別可能である、タギング・コンポーネン
    トと、
    前記ルート・オブジェクトを対応する1組のメモリー位置まで追跡するように構成された追跡コンポーネントであって、その後の追跡が前記タグ無しポインター表現に対して行われ、前記その後の追跡が前記タグ付き整数表現に対して飛ばされる、追跡コンポーネントと、
    前記コール・スタックによって到達不可能な1組オブジェクトに割り当てられたメモリーを解放するように構成されたリサイクリング・コンポーネントと、
    を含む、メモリー管理デバイス。
  10. 請求項9記載のメモリー管理デバイスにおいて、前記タギング・コンポーネントが、前記整数表現を異なるデータ構造に変換するように構成された、メモリー管理デバイス。
  11. 請求項10記載のメモリー管理デバイスにおいて、前記タギング・コンポーネントが、前記異なるデータ構造における少なくとも1つのビットをタグ専用にするように構成された、メモリー管理デバイス。
  12. 請求項9記載のメモリー管理デバイスにおいて、前記リサイクリング・コンポーネントが、到達可能なオブジェクトをそれぞれヒープの元の記憶位置に保存するように構成されている、メモリー管理デバイス。
  13. 請求項12記載のメモリー管理デバイスにおいて、前記リサイクリング・コンポーネントが、前記ヒープ内における1組の固定境界にしたがって、ヒープ・オブジェクトの分離を維持するように構成されている、メモリー管理デバイス。
  14. 請求項9記載のメモリー管理デバイスにおいて、前記リサイクリング・コンポーネントが、前記コール・スタックによってコールされたオブジェクトをヒープに載せるように構成され、前記リサイクリング・コンポーネントが、更に、前記ヒープのサイズがしきい値を超えるか否かに基づいて、ガベージ・コレクション・アルゴリズムを開始するように構成された、メモリー管理デバイス。
  15. 請求項9記載のメモリー管理デバイスにおいて、前記コール・スタックが、ジャヴァスクリプトのコンパイルと関連付けられた、メモリー管理デバイス。
JP2017234927A 2011-04-25 2017-12-07 メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数 Active JP6637022B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/093,724 US8862640B2 (en) 2011-04-25 2011-04-25 Conservative garbage collecting and tagged integers for memory management
US13/093,724 2011-04-25

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014508373A Division JP2014513354A (ja) 2011-04-25 2012-04-06 メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数

Publications (2)

Publication Number Publication Date
JP2018067331A true JP2018067331A (ja) 2018-04-26
JP6637022B2 JP6637022B2 (ja) 2020-01-29

Family

ID=47022110

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014508373A Withdrawn JP2014513354A (ja) 2011-04-25 2012-04-06 メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数
JP2017234927A Active JP6637022B2 (ja) 2011-04-25 2017-12-07 メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014508373A Withdrawn JP2014513354A (ja) 2011-04-25 2012-04-06 メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数

Country Status (7)

Country Link
US (3) US8862640B2 (ja)
EP (1) EP2702490B1 (ja)
JP (2) JP2014513354A (ja)
KR (4) KR101993793B1 (ja)
CN (2) CN103493025B (ja)
ES (1) ES2615855T3 (ja)
WO (1) WO2012148650A2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8862640B2 (en) 2011-04-25 2014-10-14 Microsoft Corporation Conservative garbage collecting and tagged integers for memory management
US20140115291A1 (en) * 2012-10-19 2014-04-24 Advanced Micro Devices, Inc. Numa optimization for garbage collection of multi-threaded applications
KR101703984B1 (ko) * 2014-07-18 2017-02-09 주식회사 큐램 메모리 처리 방법, 및 메모리 처리 시스템
FR3070775B1 (fr) * 2017-09-04 2019-08-23 Vsora Allocation dynamique utilisant plusieurs piles
US10459656B1 (en) * 2018-06-25 2019-10-29 International Business Machines Corporation Method and apparatus to represent activation frame for pause-less garbage collection
US11879789B2 (en) * 2019-07-02 2024-01-23 International Business Machines Corporation On-chip thermometer for superconducting quantum computing devices
USD967377S1 (en) 2020-10-08 2022-10-18 Samsung Electronics Co., Ltd. Air purifier
KR20220102421A (ko) * 2021-01-13 2022-07-20 삼성전자주식회사 전자 장치 및 전자 장치의 메모리 관리 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0442338A (ja) * 1990-06-07 1992-02-12 Fuji Xerox Co Ltd ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法
EP0874309A2 (en) * 1997-04-23 1998-10-28 Sun Microsystems, Inc. Method and apparatus for optimizing exact garbage collection of objects having intermingled pointer and non-pointer values
US20090327377A1 (en) * 2008-06-26 2009-12-31 Tatu Ylonen Oy Ltd Copying entire subgraphs of objects without traversing individual objects
US20100077170A1 (en) * 2008-09-22 2010-03-25 Hitachi, Ltd. Memory management method and computer using the same

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819299A (en) 1996-06-06 1998-10-06 Electric Communities Process for distributed garbage collection
US6101580A (en) 1997-04-23 2000-08-08 Sun Microsystems, Inc. Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits
US6782192B1 (en) * 1999-04-20 2004-08-24 Victor Company Of Japan, Ltd. Recording medium apparatus and method related to information representing tunes
US6675354B1 (en) 1999-11-18 2004-01-06 International Business Machines Corporation Case-insensitive custom tag recognition and handling
US6598141B1 (en) * 2001-03-08 2003-07-22 Microsoft Corporation Manipulating interior pointers on a stack during garbage collection
GB0229892D0 (en) 2002-12-21 2003-01-29 Ibm Method and apparatus for caching documents
US7168063B2 (en) 2003-06-10 2007-01-23 Microsoft Corporation Systems and methods for employing tagged types in a dynamic runtime environment
US7249235B2 (en) 2004-06-21 2007-07-24 Oracle International Corporation Architecture for a scalable and user-extensible heap dump analysis tool
US7325106B1 (en) * 2004-07-16 2008-01-29 Sun Microsystems, Inc. Method for monitoring heap for memory leaks
US7730016B2 (en) 2005-01-31 2010-06-01 Oracle International Corporation Identification of false ambiguous roots in a stack conservative garbage collector
US7873943B2 (en) 2005-12-28 2011-01-18 Intel Corporation Inserting stack clearing code in conservative garbage collection
US7631024B2 (en) 2006-01-03 2009-12-08 Sun Microsystems, Inc. Method and apparatus for facilitating mark-sweep garbage collection with reference counting
US7614003B2 (en) 2006-10-23 2009-11-03 Adobe Systems Incorporated Rendering hypertext markup language content
US7937419B2 (en) * 2008-06-26 2011-05-03 Tatu Ylonen Oy Garbage collection via multiobjects
US8341608B2 (en) 2008-11-13 2012-12-25 Visicom Media, Inc. Cross-browser toolbar and method thereof for facilitating cross-browser interoperability
US8335806B2 (en) * 2010-02-01 2012-12-18 Oracle America, Inc. Marking algorithm for garbage collection using a rescan map
US8423589B2 (en) * 2011-03-14 2013-04-16 International Business Machines Corporation Copy collector with efficient abort-on-copy transition to mark collector
US8862640B2 (en) 2011-04-25 2014-10-14 Microsoft Corporation Conservative garbage collecting and tagged integers for memory management
CN102622599B (zh) * 2012-01-21 2015-12-02 松翰科技股份有限公司 使用点编码的数据输出输入方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0442338A (ja) * 1990-06-07 1992-02-12 Fuji Xerox Co Ltd ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法
EP0874309A2 (en) * 1997-04-23 1998-10-28 Sun Microsystems, Inc. Method and apparatus for optimizing exact garbage collection of objects having intermingled pointer and non-pointer values
JPH10301835A (ja) * 1997-04-23 1998-11-13 Sun Microsyst Inc 混合されたポインタ変数と非ポインタ変数とを有するオブジェクトの厳密なガーベジ収集を最適化する方法および装置
US5920876A (en) * 1997-04-23 1999-07-06 Sun Microsystems, Inc. Performing exact garbage collection using bitmaps that identify pointer values within objects
US20090327377A1 (en) * 2008-06-26 2009-12-31 Tatu Ylonen Oy Ltd Copying entire subgraphs of objects without traversing individual objects
US20100077170A1 (en) * 2008-09-22 2010-03-25 Hitachi, Ltd. Memory management method and computer using the same
JP2010073127A (ja) * 2008-09-22 2010-04-02 Hitachi Ltd メモリ管理方法およびその方法を用いるコンピュータ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
中村成洋,相川光, ガベージコレクションのアルゴリズムと実装, JPN6019008024, 25 March 2010 (2010-03-25), JP, pages pp.14-19, 123-129 *

Also Published As

Publication number Publication date
CN103493025A (zh) 2014-01-01
JP6637022B2 (ja) 2020-01-29
KR20190020837A (ko) 2019-03-04
CN103493025B (zh) 2016-10-05
KR102139043B1 (ko) 2020-07-29
WO2012148650A3 (en) 2013-02-28
CN106294199B (zh) 2019-11-05
EP2702490A4 (en) 2015-01-21
KR20190058697A (ko) 2019-05-29
EP2702490B1 (en) 2016-11-16
US8862640B2 (en) 2014-10-14
EP2702490A2 (en) 2014-03-05
US20150006557A1 (en) 2015-01-01
US20170322955A1 (en) 2017-11-09
WO2012148650A2 (en) 2012-11-01
KR101935346B1 (ko) 2019-01-04
US20120271866A1 (en) 2012-10-25
US9684679B2 (en) 2017-06-20
KR102061466B1 (ko) 2019-12-31
CN106294199A (zh) 2017-01-04
KR20180108850A (ko) 2018-10-04
US10628398B2 (en) 2020-04-21
KR20140019413A (ko) 2014-02-14
JP2014513354A (ja) 2014-05-29
ES2615855T3 (es) 2017-06-08
KR101993793B1 (ko) 2019-06-27

Similar Documents

Publication Publication Date Title
JP6637022B2 (ja) メモリー管理のための無難なガベージ・コレクションおよびタグ付き整数
WO2017028697A1 (zh) 计算机集群的扩容和缩容方法及设备
TWI549060B (zh) Access methods and devices for virtual machine data
US9483298B2 (en) Converting virtual machine I/O requests
US20140006558A1 (en) Method and device for resuming file download
US20160246512A1 (en) Data Compression Method and Storage System
CN111414231A (zh) 一种虚拟机镜像与容器镜像相互转换的方法及设备
CN111831618A (zh) 数据写入方法、数据读取方法、装置、设备及存储介质
KR101961501B1 (ko) 메모리 관리를 위한 동시 마킹 및 동시 스위핑을 이용한 보존적인 불용 정보 수집 기법
CN107423188B (zh) 日志处理方法及设备
JP2009516296A (ja) 非同期ジャストインタイムコンパイル
CN115099196A (zh) 报文转化为数据实体的方法及装置
US8438220B2 (en) Method for optimizing remote object implementations
CN102253940B (zh) 树形控件处理数据的方法和装置
US8495033B2 (en) Data processing
US20130031129A1 (en) Apparatus and method for extending a model of a semantic web application, and terminal using the same
CN115562675A (zh) 固件中二进制文件的解析方法、装置、设备和存储介质
CN117891558A (zh) 虚拟机迁移方法、装置、电子设备及存储介质
CN112434244A (zh) 基于ueba进行日志处理的方法、装置及相关产品

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171213

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190604

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191219

R150 Certificate of patent or registration of utility model

Ref document number: 6637022

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