JP2015524593A - ビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法 - Google Patents

ビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法 Download PDF

Info

Publication number
JP2015524593A
JP2015524593A JP2015525522A JP2015525522A JP2015524593A JP 2015524593 A JP2015524593 A JP 2015524593A JP 2015525522 A JP2015525522 A JP 2015525522A JP 2015525522 A JP2015525522 A JP 2015525522A JP 2015524593 A JP2015524593 A JP 2015524593A
Authority
JP
Japan
Prior art keywords
window
objects
memory
persistent memory
bitmap
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
JP2015525522A
Other languages
English (en)
Other versions
JP6163551B2 (ja
JP2015524593A5 (ja
Inventor
アーマッド,サキブ
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2015524593A publication Critical patent/JP2015524593A/ja
Publication of JP2015524593A5 publication Critical patent/JP2015524593A5/ja
Application granted granted Critical
Publication of JP6163551B2 publication Critical patent/JP6163551B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/177Smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)

Abstract

メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法を提供する。一実施形態に従うと、システムは、概して、スマートカード、Java(登録商標)カードおよび他のリソース制約のある環境などの永続メモリを用いるコンピューティング環境(100)と共に用いることができる。一実施形態に従うと、システムは、プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリと、各々が永続メモリ(140)においてアドレス可能な空間のチャンク(146,148,150)を表わしている1つ以上のメモリビットマップウインドウ(144)を含み得るデータ構造(142)とを含む。システムは、永続メモリから到達不可能なオブジェクトを削除する際に1つ以上のメモリビットマップウインドウを用いる。

Description

著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
発明の分野:
本発明の実施形態は、概して、永続的メモリストレージに関し、特に、リソース制約のある環境および他のコンピューティング環境に関し、さらに、メモリチャンクを表わすビットマップウインドウを用いて永続メモリから到達不可能なオブジェクトを削除するためのシステムおよび方法に関する。
背景:
スマートカードまたは同様の実行環境もしくはデバイスなどの典型的なリソース制約のある環境は、ランダムアクセスメモリリソースが制限されている可能性があり、その代わりに永続メモリが、ソフトウェアオブジェクトを生成および記憶するためのデフォルト位置として用いられる可能性がある。
このような環境では、規定された一組のルートから到達不可能であるため、ガベージとなったオブジェクトによって使用されている永続メモリを再利用する必要がある。他の環境において有用であり得るJava(登録商標)SEなどのガベージコレクションアルゴリズムは、しばしば、オブジェクトを移動させるかまたはオブジェクトに直接マークするなどの技術に依拠している。しかしながら、これらの技術は、リソース制約のあるスマートカードまたは同様の実行環境においてはそれほど有用ではない。というのも、消耗してしまう前に永続メモリデバイスに対して限られた回数のデータ書込みしか行えないとすれば、永続メモリにおいてオブジェクトを移動させたりオブジェクトにマークしたりすることは時間のかかる動作となり、場合によってはダメージを与える動作となるからである。
概要:
メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法をこの明細書中に記載する。一実施形態に従うと、システムは、概して、スマートカード、Java(登録商標)カードおよび他のリソース制約のある環境などの永続メモリを用いるコンピューティング環境と共に用いることができる。一実施形態に従うと、システムは、プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリと、1つ以上のメモリビットマップウインドウを含むことができるデータ構造とを含む。これら1つ以上のメモリビットマップウインドウの各々は、永続メモリにおけるアドレス可能な空間のチャンクを表わす。システムは、永続メモリから到達不可能なオブジェクトを削除するのに1つ以上のメモリビットマップウインドウを用いる。
一実施形態に従った、リソース制約のある環境またはスマートカードなどの永続メモリを用いるコンピューティング環境の例を示す図である。 一実施形態に従った、永続メモリにおけるオブジェクト削除のための、メモリチャンクを表わすビットマップウインドウの使用を示す図である。 一実施形態に従った、永続メモリにおけるオブジェクト削除のためのビットマップウインドウの使用をさらに示す図である。 一実施形態に従った、永続メモリにおけるオブジェクト削除のためのビットマップウインドウの使用をさらに示す図である。 一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法を示すフローチャートである。 一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法をさらに示すフローチャートである。 一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法をさらに示すフローチャートである。
詳細な説明:
上述のとおり、スマートカードまたは同様の実行環境もしくはデバイスなどの典型的なリソース制約のある環境は、ランダムアクセスメモリリソースが制限されている可能性があり、その代わりに永続メモリが、ソフトウェアオブジェクトを生成および記憶するためのデフォルト位置として用いられる可能性がある。このような環境では、規定された一組のルートから到達不可能であるため、ガベージとなったオブジェクトによって使用されている永続メモリを再利用する必要がある。しかしながら、他の環境において有用であり得るが、オブジェクトを移動させるかまたはオブジェクトに直接マークするなどの技術に依拠しているガベージコレクションアルゴリズムは、リソース制約のある環境、スマートカードまたは同様の実行環境においてはそれほど有用ではない。というのも、消耗してしまう前に永続メモリデバイスに対して限られた回数のデータ書込みしか行えないとすれば、永続メモリにおいてオブジェクトを移動させたりオブジェクトにマークしたりすることは時間のかかる動作となり、場合によってはダメージを与える動作となるからである。
これに対処するのに用いることができる方策のいくつかの典型例を挙げると、各オブジェクトをチェックして、システムにおける他のいずれかのオブジェクトから参照されているかどうかを判断するためにブルートフォース(brute force)アルゴリズムを使用すること;オブジェクトが別のオブジェクトによって参照されていないことを0の参照カウントが示すように、参照カウントを用いてオブジェクトを更新する参照カウントアルゴリズム(reference counting algorithm)を使用すること;または、メモリにおけるオブジェクトを表わすRAMビットマップを使用すること;が含まれる。
これらの方策のうち最初の2つについての問題は、それらがさらに単純なサイクルの場合の周期的な参照にも対応していない点である。また、第1の方策では時間がかかってしまう。なぜなら、最悪のシナリオにおいては、あるオブジェクトから別のオブジェクトに対する参照を判断するために、システムにおける潜在的にすべてのオブジェクトがシステムにおいて1つおきにチェックされなければならなくなるからである。第3の方策についての問題は、システムが実際のアドレスではなくオブジェクトテーブルからのオブジェクト参照を用いるようにオブジェクトを逆参照する(dereferencing)ことに依拠している点である。しかしながら、これにより全体的な実行環境の速度が低下する。なぜなら、多くの動作がオブジェクトアドレスを必要とすることとなり、参照によりアドレスを得るために変換処理されなければならなくなるからである。
一実施形態に従うと、メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法がこの明細書中に記載される。一実施形態に従うと、システムは、概して、スマートカード、Java(登録商標)カードおよび他のリソース制約のある環境などの永続メモリを用いるコンピューティング環境と共に用いることができる。一実施形態に従うと、システムは、プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリと、1つ以上のメモリビットマップウインドウを含むことができるデータ構造とを含む。これら1つ以上のメモリビットマップウインドウの各々は、永続メモリにおけるアドレス可能な空間のチャンクを表わす。システムは、永続メモリから到達不可能なオブジェクトを削除するのに1つ以上のメモリビットマップウインドウを用いる。
さまざまな実施形態に従うと、この明細書中に記載されるシステムおよび方法のいくつかの利点は、周期的な参照についての問題に対処する高速型のマーク・スイープ・ガベージコレクション(mark-sweep garbage collection)技術を提供できること;オブジェクトを逆参照する必要がないこと;メモリを実際に再利用するまで永続メモリに書込みを行う必要がないこと;全体的なターゲットメモリ区域の増加によってリソース要件が増加しないようにその方策がスケーラブルであること;を含む。
図1は、一実施形態に従った、リソース制約のある環境またはスマートカードなどの永続メモリを用いるコンピューティング環境の例を示す図である。
図1に図示のとおり、一実施形態に従うと、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイス100は、計算動作を実行するための回路類を含み得るプロセッサまたは計算エンジン126と、ランダムアクセスメモリ(RAM:random access memory)120、電気的消去可能なプログラム可能読出し専用メモリ(EEPROM:electrically erasable programmable read-only memory)122および/または読出し専用メモリ(ROM:read-only memory)124などの1つ以上のメモリとを含む小型のコンピューティングデバイスと見なすことができる。
一実施形態に従うと、RAMは、揮発性ランダムアクセスメモリを含んでもよく、EEPROMは、書込み可能な不揮発性メモリを含んでもよく、ROMは、読出し専用メモリを含んでもよい。RAMは、データ項目およびデータ構造、たとえばシステムスタック121などを記憶するために用いることができる。ROMは、スマートカードによって実行されるJava(登録商標)などのプラットフォーム非依存性プログラミング言語で書き込まれたアプリケーションを可能にするJava(登録商標)仮想マシンなどの仮想マシン108を含んでもよく、スマートカードにアクセスするサービスをクライアントに提供する1つ以上のアプリケーション104、105を含んでもよい。一実施形態に従うと、アプリケーション106は、EEPROMに、またはROMおよび/もしくはEEPROMに配置することもできる。
一実施形態に従うと、システムはカードマネージャ102または同様のロジックを含み得る。カードマネージャ102または同様のロジックは、コンピューティング環境またはデバイス上でのアプリケーションの実行を管理し(たとえば、クライアントとアプリケーションとの間の通信の許可を含む)、メモリからオブジェクトを削除するためのコードを含む。たとえば、図1に図示のとおり、デバイスの動作中、EEPROMは、アプリケーション104および105によってアクセスされる複数のオブジェクト112、113および114を含んでもよく(より具体的には、アプリケーション104がオブジェクト112にアクセスし、アプリケーション105がオブジェクト113および114にアクセスし、アプリケーション106がオブジェクト114にアクセスする)が、リンクされていなかった他のオブジェクト115、116はもはや如何なるアプリケーションによっても参照されない。一般には、メモリ空間を解放するためにこれらの参照されていないオブジェクトを削除することが望ましい。
図1に示される環境は、この明細書中に記載されるシステムおよび方法を利用することができる一種の環境を例示することによって規定される。さまざまな実施形態に従うと、本発明は、リソース制約のある環境またはスマートカードに限定されず、または、上述の特定の環境もしくは構成に限定されず、概して、書込み可能な永続メモリまたは不揮発性メモリにオブジェクトを記憶することのできる他の種類のコンピューティング環境、デバイスまたはシステムと共に用いることができる。
一実施形態に従うと、メモリのチャンクを表わすビットマップウインドウを使用するためのシステムおよび方法が提供される。その技術は、大量のアドレス可能な空間をマッピングしつつ、極めて限られたリソースで機能し得るアルゴリズムまたは方法を用いる。当該技術はまた、永続メモリ容量が増加した場合に、全体的なRAMサイズが比較的変化しないままであっても、アルゴリズムまたは方法が依然として機能するように、スケーラブルである。加えて、アルゴリズムまたは方法は、ブルートフォース、参照カウントおよび逆参照技術の場合のように、全体的なシステム性能を低下させない。
図2は、一実施形態に従った、永続メモリにおけるオブジェクト削除のための、メモリチャンクを表わすビットマップウインドウの使用を示す図である。
図2に図示のとおり、一実施形態に従うと、システムはデータ構造142を含み得る。データ構造142は、オブジェクトを記憶するための永続メモリ140におけるアドレス可能な空間146、148、150のチャンクを表わす1つ以上のメモリビットマップウインドウ144(156,158,160)を含み得る。データ構造はさらに、既に処理されたウインドウにおいて参照されてないオブジェクトを列挙した潜在的ガベージリスト(potential garbage list)162;先行のウインドウから参照されているが先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのためのルートになるオブジェクトを列挙したダイナミックルートリスト(dynamic roots list)164;フェーズ(phase)をマークするために再帰深さ(recursion depth)を制限する構成可能な値である最大再帰深さ166;および、構成された再帰深さに到達したときに未処理の子オブジェクトを含んでいる遅延型オブジェクトリスト168を含み得る。
図3および図4はさらに、一実施形態に従った、永続メモリにおけるオブジェクト削除のためのビットマップウインドウの使用を示す。
一実施形態に従うと、マーキングプロセス中にEEPROMに不必要な書込みがなされるのを避けるために、システムはRAMにビットマップを維持することができる。いくつかの環境においては、たとえば、典型的なリソース制約のある環境であるRAMは稀少なリソースであり、典型的な量は2kであるかもしれず、これでは、ビットマップを記憶するための空間が少ししか提供されない。一例として、512バイトビットマップは4kビットを含み、各ビットは4バイトに相当し得るので、このサイズのビットマップを用いて16kのメモリを表わすことができる。
一実施形態に従うと、オブジェクト削除プロセス中、システムは、メモリに到達可能なオブジェクトをすべて「マークする」マーキングプロセスを実行することができる。これは、到達可能なオブジェクトを見つけるために、アプレットテーブルおよび静的変数などの「ルート」からの一連の参照に従うことによって達成することができる。たとえば、アプレットオブジェクトは別のオブジェクトを指すことができ、この別のオブジェクトはさらに他のオブジェクトを指し、これらさらに他のオブジェクトの各々も他のオブジェクトを指す。同様に、静的変数はオブジェクトを指すことができ、これらオブジェクトはさらに他のオブジェクトを指す。
一実施形態に従うと、マーキングフェイズ中、ウインドウのルートオブジェクトから始まって、そのオブジェクトの子(object children)がマークされる。子オブジェクトがウインドウの外部であって次のウインドウに存在する場合、そのオブジェクトは次のウインドウのためのルートとしてダイナミックルートリストに入れることができる。子オブジェクトは、このウインドウ内にある場合マークすることができ、システムは、そのオブジェクトの子を再帰的に処理することができる。子オブジェクトが先行のウインドウにある場合、システムは、潜在的ガベージリストをチェックし、そのオブジェクトを再帰的に処理し、次いで、そのオブジェクトを、このウインドウからアドレス可能であるので潜在的ガベージリストから削除する。ウインドウに対するマーキングフェイズ後、システムは、マークされなかったオブジェクトを探し、潜在的ガベージリストに入れる。これらのオブジェクトは、次のウインドウからアドレス可能であるかもしれないので、実際にはまだガベージとは見なされない可能性がある。次いで、システムは次のウインドウを処理する。最終的に、ウインドウの完成後、潜在的ガベージリストは、参照されておらずガベージと見なされ得るそれらのオブジェクトを含むこととなる。
図3に図示のとおり、一実施形態に従って、メモリ空間が複数のウインドウに分割される。ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップが初期化される。たとえば、メモリ管理が4バイトアライメントで実行される場合、ビットは、4バイトのメモリセルにおける最初のバイトを表わし得る。次いで、ビットマップウインドウが処理される。各々のウインドウのためにルートオブジェクトがマークされる。この場合、アプレットテーブル169によって示されるようにカレントウインドウ内でアプレットオブジェクト170をマークすること;ウインドウにあってスタティックフィールド176から参照されるオブジェクト174をマークすること;および、ダイナミックルートテーブルからウインドウにあるオブジェクト178をマークすることを含む。
一実施形態に従うと、次に、子オブジェクトがマークされる。ここでは、子オブジェクト171および172がカレントウインドウ内で発見される場合、ビットマップにおける対応するビットをマークする(184)ことによってそのオブジェクトをマークすることを含む。子オブジェクト180が潜在的ガベージリストにおいてカレントウインドウの外部で発見される場合、オブジェクトおよびその子は、カレントウインドウおよび潜在的ガベージリストにおいて再帰的にマークされる。子オブジェクトがカレントウインドウの外部で発見され、潜在的ガベージリストにない場合、オブジェクトがメモリのうちの処理済み区域にあれば、そのオブジェクトは、到達可能なものとして既にマークされているため、無視することができる。そうではなく、子オブジェクトがメモリのうちまだ処理される必要のある区域にある場合、その子オブジェクトはダイナミックルートリストに入れられる。
一実施形態に従うと、子オブジェクトをマークしている間、最大再帰深さに到達した場合、階層における次のオブジェクトが遅延型オブジェクトリストに加えられ、現在の階層の処理終了時に処理されることとなる。遅延型オブジェクトリストが一杯であり、最大再帰深さに到達した場合、ビットマップをリセットすることなく、カレントウインドウにおいてマーキングプロセスが再開されるので、2番目のサイクルおよび後続のサイクルにおけるルートの数が増加する。マーキングフェイズがウインドウにおいて完了すると、ウインドウ内における未参照のオブジェクトはいずれも潜在的ガベージリストに加えられる。
図4に図示のとおり、次のウインドウと、そのルートおよび子オブジェクト185、186、187、188とについてプロセスが続行される。ウインドウがすべて処理されると、潜在的ガベージリストは、参照されていないためガベージとされるオブジェクト189のみを含むこととなる。一実施形態に従うと、これらのオブジェクトは用いられるメモリを再利用するために削除することができる。
図5は、一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法190を示すフローチャートである。
図5に図示のとおり、ステップ192において、メモリ空間が複数のウインドウに分割される。
ステップ194において、ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップが初期化される。
ステップ196、198および202において、ビットマップウインドウが処理される。一実施形態に従うと、各ウインドウのために、ルートオブジェクトがマークされる。この場合、カレントウインドウ内におけるアプレットオブジェクトをマークすること、ウインドウにあってスタティックフィールドから参照されるオブジェクトをマークすること、および、ダイナミックルートテーブルからウインドウにあるオブジェクトをマークすることが含まれる。次いで、子オブジェクトが、以下にさらに詳細に記載される基準に従ってマークされ、ビットマップが更新される。カレントウインドウにおける未参照の如何なるオブジェクトも潜在的ガベージリストに加えられる。
ステップ204において、ウインドウがすべて処理されると、潜在的ガベージリストは、参照されていないためガベージとされるオブジェクトのみを含むこととなる。一実施形態に従うと、これらのオブジェクトは用いられるメモリを再利用するために削除することができる。
図6は、一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法210をさらに示すフローチャートである。特に、図6は、一実施形態に従って、ルートおよび子オブジェクトのマークが如何に実行され得るかをさらに示す。
図6に図示のとおり、ステップ212において、各ウインドウのために、ルートオブジェクトがマークされる。この場合、カレントウインドウ内におけるアプレットオブジェクトをマークすること、ウインドウにあってスタティックフィールドから参照されるオブジェクトをマークすること、ダイナミックルートテーブルからウインドウにあるオブジェクトをマークすることを含む。
ステップ214において、子オブジェクトがマークされる。この場合、子オブジェクトがカレントウインドウ内で発見される場合、ビットマップにおける対応するビットをマークすることによってそのオブジェクトをマークすることを含む。子オブジェクトが潜在的ガベージリストにおいてカレントウインドウの外部で発見される場合、オブジェクトおよびその子は、カレントウインドウおよび潜在的ガベージリストにおいて再帰的にマークされる。子オブジェクトがカレントウインドウの外部で発見され、潜在的ガベージリストにない場合、オブジェクトがメモリのうち既に処理済みの区域にあれば、このオブジェクトは到達可能なものとして既にマークされており、このため、無視することができる。代わりに、子オブジェクトがメモリのうちまだ処理される必要のある区域にある場合、その子オブジェクトはダイナミックルートリストに入れられる。
ステップ216において、子オブジェクトをマークしている間、最大再帰深さに到達した場合、階層における次のオブジェクトが遅延型オブジェクトリストに加えられ、現在の階層の処理終了時に処理されることとなる。
ステップ220において、遅延型オブジェクトリストが一杯であり、最大再帰深さに到達した場合、ビットマップをリセットすることなく、マーキングプロセスがカレントウインドウにおいて再開され、これにより、2番目のサイクルおよび後続のサイクルにおけるルートの数が増加する。
ステップ222において、マーキングフェイズがウインドウにおいて完了すると、ウインドウ内における未参照の如何なるオブジェクトも潜在的ガベージリストに加えられる。上述のとおり、ウインドウがすべて処理されると、潜在的ガベージリストは、参照されていないためガベージとされるオブジェクトのみを含むこととなる。一実施形態に従うと、これらのオブジェクトは、用いられるメモリを再利用するために削除することができる。
図7は、一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法230をさらに示すフローチャートである。特に、図7は、一実施形態に従った、図5および図6において先に記載されたステップの各々の組合せを示す。
概して、本発明は、1つ以上のマイクロプロセッサ上で動作し、メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムに関する。当該システムは、
プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリとを含む、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイスにおいて、各々が永続メモリにおけるアドレス可能な空間のチャンクを表わしている1つ以上のメモリビットマップウインドウを含むことができるデータ構造を提供するための手段と、
永続メモリから到達不可能なオブジェクトを削除する際に1つ以上のメモリビットマップウインドウを用いるための手段とを含む。
上記システムは、データ構造内において、
潜在的ガベージリスト;
ダイナミックルートリスト;
最大再帰深さ;および
遅延型オブジェクトリスト;のうち1つ以上を提供するための手段をさらに含む。
上記システムはさらに、
潜在的ガベージリストが、既に処理されたウインドウにおいて参照されていないオブジェクトを含むこと;
ダイナミックルートリストが、先行のウインドウから参照されているが、先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのルートになるオブジェクトを含むこと;
最大再帰深さが、マーキングフェイズのために再帰深さを制限する構成可能な値であること;および、
構成された再帰深さに到達したときに、遅延型オブジェクトリストは、まだ処理されていない子オブジェクトを含むこと;を含む。
上記システムはさらに、
オブジェクトを記憶するのに用いられる永続メモリ空間を複数のウインドウに分割するための手段と;
ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップを初期化するための手段と;
各ウインドウのために、ルートをマークし、子を再帰的にマークすることと;
マーキングフェイズがウインドウにおいて完了した場合、このウインドウ内における未参照の如何なるオブジェクトも潜在的ガベージリストに加えるための手段と;
参照されておらずガベージと見なすことができるオブジェクトが潜在的ガベージリストに最終的に含まれるように、ウインドウの各々を処理するための手段と;を含む。
本発明は、本開示の教示に従ってプログラムされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取り可能な記憶媒体を含む、1つ以上の従来の汎用のまたは特化されたデジタルコンピュータ、コンピューティングデバイス、機械またはマイクロプロセッサを用いて好都合に実現され得る。ソフトウェア技術の当業者にとって明らかになるように、熟練したプログラマであれば、本開示の教示に基づいて適切なソフトウェアコーディングを容易に作成することができる。
いくつかの実施形態においては、本発明は、命令が記憶されている/本発明のプロセスのうちのいずれかを実行するようにコンピュータをプログラムするのに用いることができる非一時的な記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラムプロダクトを含む。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および磁気光ディスクを含む如何なるタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリ素子、磁気もしくは光カード、(分子メモリICを含む)ナノシステム、または命令および/もしくはデータを記憶するのに適した如何なるタイプの媒体もしくは装置をも含み得るが、これらに限定されない。
本発明の上述の記載は例示および説明のために提供されたものであり、網羅的なものとして意図されたものではなく、または、開示された厳密な形態に本発明を限定するよう意図されたものではない。多くの変更例および変形例が当業者に明らかになるだろう。本発明およびその実用化の原理を最も良く説明することにより、企図される特定の用途に適したさまざまな実施形態について、さまざまな変更例と共に、当業者が本発明を理解することを可能にするために、実施形態が選択され、記載されている。本発明の範囲が添付の特許請求の範囲およびその同等例によって規定されることが意図される。

Claims (14)

  1. メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムであって、
    プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリとを含む、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイスと、
    1つ以上のメモリビットマップウインドウを含むことができるデータ構造とを含み、当該1つ以上のメモリビットマップウインドウの各々は、前記永続メモリにおけるアドレス可能な空間のチャンクを表し、
    前記システムは、前記永続メモリから到達不可能なオブジェクトを削除する際に前記1つ以上のメモリビットマップウインドウを用いる、システム。
  2. 前記データ構造は、
    潜在的ガベージリスト;
    ダイナミックルートリスト;
    最大再帰深さ;および
    遅延型オブジェクトリスト;
    のうち1つ以上を含む、請求項1に記載のシステム。
  3. 前記潜在的ガベージリストは、既に処理されたウインドウにおいて参照されていないオブジェクトを含み、
    前記ダイナミックルートリストは、先行のウインドウから参照されているが先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのルートになるオブジェクトを含み、
    前記最大再帰深さは、マーキングフェイズのために再帰深さを制限する構成可能な値であり、
    構成された再帰深さに到達したときに、前記遅延型オブジェクトリストは、まだ処理されていない子オブジェクトを含む、請求項2に記載のシステム。
  4. 前記システムは、
    オブジェクトを記憶するのに用いられる永続メモリ空間を複数のウインドウに分割するステップと、
    ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップを初期化するステップと、
    各ウインドウのために、ルートをマークし、子を再帰的にマークするステップと、
    マーキングフェイズがウインドウにおいて完了すると、このウインドウ内における未参照の如何なるオブジェクトをも潜在的ガベージリストに加えるステップと、
    参照されておらずガベージと見なすことのできるオブジェクトが潜在的ガベージリストに最終的に含まれるように、前記複数のウインドウの各々を処理するステップとを含む、方法を実行する、請求項3に記載のシステム。
  5. メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除する方法であって、
    プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリとを含む、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイスにおいて、各々が前記永続メモリにおけるアドレス可能な空間のチャンクを表わす1つ以上のメモリビットマップウインドウを含むことができるデータ構造を提供するステップと、
    永続メモリから到達不可能なオブジェクトを削除する際に前記1つ以上のメモリビットマップウインドウを用いるステップとを含む、方法。
  6. 潜在的ガベージリスト;
    ダイナミックルートリスト;
    最大再帰深さ;および
    遅延型オブジェクトリスト
    のうち1つ以上をデータ構造内に提供するステップをさらに含む、請求項5に記載の方法。
  7. 前記潜在的ガベージリストは、既に処理されたウインドウにおいて参照されていないオブジェクトを含み、
    前記ダイナミックルートリストは、先行のウインドウから参照されているが先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのルートになるオブジェクトを含み、
    前記最大再帰深さは、マーキングフェイズのために再帰深さを制限する構成可能な値であり、
    構成された再帰深さに到達したときに、前記遅延型オブジェクトリストは、まだ処理されていない子オブジェクトを含む、請求項6に記載の方法。
  8. オブジェクトを記憶するのに用いられる永続メモリ空間を複数のウインドウに分割するステップと、
    ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップを初期化するステップと、
    各ウインドウのために、ルートをマークし、子を再帰的にマークするステップと、
    マーキングフェイズがウインドウにおいて完了すると、このウインドウ内における未参照の如何なるオブジェクトをも潜在的ガベージリストに加えるステップと、
    参照されておらずガベージと見なすことができるオブジェクトが潜在的ガベージリストに最終的に含まれるように、前記複数のウインドウの各々を処理するステップとを含む、請求項7に記載の方法。
  9. コンピュータシステムによって実行されると請求項1から8のいずれかに記載の方法をコンピュータシステムに実行させるプログラムコード命令を含むコンピュータプログラム。
  10. 機械読取可能媒体に記憶された請求項9に記載のコンピュータプログラムを含むコンピュータプログラムプロダクト。
  11. 命令が記憶された非一時的なコンピュータ読取可能媒体であって、前記命令は、コンピューティング環境またはデバイスによって読出されて実行されると、コンピューティング環境またはデバイスに、
    プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリとを含む、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイスにおいて、各々が前記永続メモリにおけるアドレス可能な空間のチャンクを表わす1つ以上のメモリビットマップウインドウを含むことができるデータ構造を提供するステップと、
    永続メモリから到達不可能なオブジェクトを削除する際に前記1つ以上のメモリビットマップウインドウを用いるステップとを実行させる、非一時的なコンピュータ読取可能媒体。
  12. 潜在的ガベージリスト;
    ダイナミックルートリスト;
    最大再帰深さ;および
    遅延型オブジェクトリスト
    のうち1つ以上をデータ構造内に提供するステップをさらに含む、請求項11に記載の非一時的なコンピュータ読取可能媒体。
  13. 前記潜在的ガベージリストは、既に処理されたウインドウにおいて参照されていないオブジェクトを含み、
    前記ダイナミックルートリストは、先行のウインドウから参照されているが先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのルートになるオブジェクトを含み、
    前記最大再帰深さは、マーキングフェイズのために再帰深さを制限する構成可能な値であり、
    構成された再帰深さに到達したときに、前記遅延型オブジェクトリストは、まだ処理されていない子オブジェクトを含む、請求項12に記載の非一時的なコンピュータ読取可能媒体。
  14. オブジェクトを記憶するのに用いられる永続メモリ空間を複数のウインドウに分割するステップと、
    ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップを初期化するステップと、
    各ウインドウのために、ルートをマーククし、子を再帰的にマークするステップと、
    マーキングフェイズがウインドウにおいて完了すると、このウインドウ内における未参照の如何なるオブジェクトをも潜在的ガベージリストに加えるステップと、
    参照されておらずガベージと見なすことができるオブジェクトが潜在的ガベージリストに最終的に含まれるように、前記複数のウインドウの各々を処理するステップとを含む、請求項13に記載の非一時的なコンピュータ読取可能媒体。
JP2015525522A 2012-07-30 2013-07-30 ビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法 Active JP6163551B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261677390P 2012-07-30 2012-07-30
US61/677,390 2012-07-30
US13/782,433 2013-03-01
US13/782,433 US9141539B2 (en) 2002-05-24 2013-03-01 System and method for object deletion in persistent memory using bitmap windows
PCT/US2013/052780 WO2014022431A1 (en) 2012-07-30 2013-07-30 System and method for object deletion in persistent memory using bitmap windows

Publications (3)

Publication Number Publication Date
JP2015524593A true JP2015524593A (ja) 2015-08-24
JP2015524593A5 JP2015524593A5 (ja) 2016-06-16
JP6163551B2 JP6163551B2 (ja) 2017-07-12

Family

ID=49996077

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015525522A Active JP6163551B2 (ja) 2012-07-30 2013-07-30 ビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法

Country Status (6)

Country Link
US (1) US9141539B2 (ja)
EP (1) EP2880538B1 (ja)
JP (1) JP6163551B2 (ja)
KR (1) KR102065563B1 (ja)
CN (1) CN104350478B (ja)
WO (1) WO2014022431A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268807B2 (en) * 2013-07-17 2016-02-23 Sybase, Inc. In-memory bitmap for column store operations
US9367449B2 (en) * 2013-09-11 2016-06-14 Owtware Holdings Limited, BVI Hierarchical garbage collection in an object relational database system
US10372676B2 (en) 2015-07-30 2019-08-06 Netapp Inc. Stale data detection
US10019456B2 (en) * 2016-06-29 2018-07-10 Microsoft Technology Licensing, Llc Recovering free space in nonvolatile storage with a computer storage system supporting shared objects
FR3064773B1 (fr) * 2017-04-04 2022-07-15 Safran Identity & Security Procede de ramassage de miettes dans une memoire d'un dispositif a plusieurs profils d'utilisateur
US11294805B2 (en) * 2019-04-11 2022-04-05 EMC IP Holding Company LLC Fast and safe storage space reclamation for a data storage system
CN111061508B (zh) * 2019-12-12 2022-05-20 恒宝股份有限公司 一种Java卡及其性能优化方法
US11422932B2 (en) * 2019-12-20 2022-08-23 Microsoft Technology Licensing, Llc Integrated reference and secondary marking
US11392427B2 (en) 2020-01-06 2022-07-19 Microsoft Technology Licensing, Llc Lock-free reading of unitary value sets
CN112947856B (zh) * 2021-02-05 2024-05-03 彩讯科技股份有限公司 一种内存数据的管理方法、装置、计算机设备及存储介质
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453403B1 (en) * 2000-05-19 2002-09-17 Sun Microsystems, Inc. System and method for memory management using contiguous fixed-size blocks
US20030221047A1 (en) * 2002-05-24 2003-11-27 Ahmed Saqib J. Method and apparatus for deleting objects from memory within a smart card
US20070136401A1 (en) * 2003-11-05 2007-06-14 Im Young Jung Apparatus and method for garbage collection
US20070174369A1 (en) * 2006-01-12 2007-07-26 Sun Microsystems, Inc. Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector
US20080162610A1 (en) * 2006-12-30 2008-07-03 Sap Ag Database garbage collector
US20090248766A1 (en) * 2005-03-28 2009-10-01 Sun Microsystems, Inc. Method and apparatus for improving parallel marking garbage collectors that use external bitmaps
JP2012128900A (ja) * 2010-12-14 2012-07-05 Samsung Yokohama Research Institute Co Ltd 半導体記憶装置、及び記憶媒体

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933847A (en) * 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US6480935B1 (en) * 1999-01-15 2002-11-12 Todd Carper Smart card memory management system and method
US7987215B2 (en) * 2008-04-22 2011-07-26 Microsoft Corporation Efficiently marking objects with large reference sets
US7937419B2 (en) * 2008-06-26 2011-05-03 Tatu Ylonen Oy Garbage collection via multiobjects
US8312219B2 (en) * 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453403B1 (en) * 2000-05-19 2002-09-17 Sun Microsystems, Inc. System and method for memory management using contiguous fixed-size blocks
US20030221047A1 (en) * 2002-05-24 2003-11-27 Ahmed Saqib J. Method and apparatus for deleting objects from memory within a smart card
US20070136401A1 (en) * 2003-11-05 2007-06-14 Im Young Jung Apparatus and method for garbage collection
US20090248766A1 (en) * 2005-03-28 2009-10-01 Sun Microsystems, Inc. Method and apparatus for improving parallel marking garbage collectors that use external bitmaps
US20070174369A1 (en) * 2006-01-12 2007-07-26 Sun Microsystems, Inc. Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector
US20080162610A1 (en) * 2006-12-30 2008-07-03 Sap Ag Database garbage collector
JP2012128900A (ja) * 2010-12-14 2012-07-05 Samsung Yokohama Research Institute Co Ltd 半導体記憶装置、及び記憶媒体

Also Published As

Publication number Publication date
CN104350478B (zh) 2017-06-16
US9141539B2 (en) 2015-09-22
WO2014022431A1 (en) 2014-02-06
EP2880538A1 (en) 2015-06-10
JP6163551B2 (ja) 2017-07-12
US20140032841A1 (en) 2014-01-30
EP2880538B1 (en) 2022-04-20
KR20150039742A (ko) 2015-04-13
KR102065563B1 (ko) 2020-02-11
CN104350478A (zh) 2015-02-11

Similar Documents

Publication Publication Date Title
JP6163551B2 (ja) ビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法
US8849876B2 (en) Methods and apparatuses to optimize updates in a file system based on birth time
US8244775B1 (en) Using map objects to access object properties in a dynamic object-oriented programming language
KR101484816B1 (ko) 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제
US10936207B2 (en) Linked lists in flash memory
US8392881B1 (en) Supporting efficient access to object properties in a dynamic object-oriented programming language
CN107066498B (zh) 键值kv存储方法和装置
US7882159B2 (en) Associative references in a garbage collected programming environment
US9740716B2 (en) System and method for dynamically selecting a garbage collection algorithm based on the contents of heap regions
TW200900930A (en) Hierarchical immutable content-addressable memory processor
TW201926046A (zh) 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
CN113785275B (zh) Flash数据掉电保护方法及设备
US11106362B2 (en) Additive library for data structures in a flash memory
CA2978927C (en) Data check method and storage system
KR102440128B1 (ko) 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법
CN107665095B (zh) 存储器空间管理的设备、方法及可读存储介质
JP6130971B2 (ja) データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム
US7991807B2 (en) Method and system for garbage collection
JP2014225197A (ja) データ記憶システムおよびその制御方法
US20140164688A1 (en) Soc system and method for operating the same
KR101676175B1 (ko) 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법
JP6173031B2 (ja) コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム
Golovin B-treaps: A uniquely represented alternative to B-trees
US20210303461A1 (en) Deep object graph traversal
US9753850B1 (en) On-heap huge slab allocator

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160422

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160422

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170406

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170619

R150 Certificate of patent or registration of utility model

Ref document number: 6163551

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