JP5883300B2 - オブジェクトを特定するためのハッシュコードを生成するための方法、プログラム及びシステム - Google Patents

オブジェクトを特定するためのハッシュコードを生成するための方法、プログラム及びシステム Download PDF

Info

Publication number
JP5883300B2
JP5883300B2 JP2012021187A JP2012021187A JP5883300B2 JP 5883300 B2 JP5883300 B2 JP 5883300B2 JP 2012021187 A JP2012021187 A JP 2012021187A JP 2012021187 A JP2012021187 A JP 2012021187A JP 5883300 B2 JP5883300 B2 JP 5883300B2
Authority
JP
Japan
Prior art keywords
hash code
heap
generating
heap area
area
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.)
Expired - Fee Related
Application number
JP2012021187A
Other languages
English (en)
Other versions
JP2013161186A (ja
Inventor
清久仁 河内谷
清久仁 河内谷
民也 小野寺
民也 小野寺
幹雄 竹内
幹雄 竹内
サリフ・ザキロフ
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 JP2012021187A priority Critical patent/JP5883300B2/ja
Priority to US13/752,435 priority patent/US9135169B2/en
Publication of JP2013161186A publication Critical patent/JP2013161186A/ja
Application granted granted Critical
Publication of JP5883300B2 publication Critical patent/JP5883300B2/ja
Expired - Fee Related 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
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • G06F12/0276Generational garbage collection
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

この発明は、コンピュータ・システムにおいて、生成されたオブジェクトを特定する技法に関し、より詳しくは、オブジェクトを特定するためのハッシュコードを生成するための技法に関するものである。
従来より、例えば、特開2010−204955号公報に記述されているように、Java(R)などで生成され、ヒープ領域に割り付けられたオブジェクトを追跡し、あるいは突き止めるために、ハッシュ値を生成して、オブジェクトに割り当てることが行われている。
具体的には例えば、コンピュータ・システムが、生成したハッシュ値と、オブジェクトの識別子を含むテーブルを作成して、このテーブルを引くことによってハッシュ値からオブジェクトを突き止める。
このようなハッシュ値は、従来技術では、典型的にはオブジェクトのアドレスにオブジェクトの識別子を付加した値に基づき計算され、オブジェクト・ヘッダにおける、例えば15ビットの領域に格納される。
また、典型的には、オブジェクト・ヘッダには2ビットの領域があり、次のような意味をもつ:
・"00" = ハッシュされていない。すなわち、オブジェクト・ハッシュコードはまだ存在しない。
・"01" = ハッシュされている。オブジェクト・ハッシュコードは、オブジェクト・アドレスから計算することができる。
・"10" = ハッシュされ、移動された。オブジェクト・ハッシュコードが、オブジェクトに付加されている。
しかし、従来技術では、オブジェクトのアドレスに従いオブジェクト・ハッシュコードを生成すると、オブジェクトのアドレスの値の限界から、オブジェクト・ハッシュコードの衝突を引き起こし、パフォーマンスが低下するという問題があった。
そこで、O Agesen, "Space and time-efficient hashing of garbage-collected objects",- Theory and Practice of Object Systems, 1999は、オブジェクト・ハッシュコードのバリエーションを増やすために、ヒープに、オブジェクト・ハッシュコード生成のために追加のシードを付加することを開示する。このシードは、世代別(generational)ヒープ領域での、ガベージ・コレクションにおける古い(tenured)オブジェクトのためのものである。
しかし、この文献の技法は、非世代別(non-generational)ヒープ領域のためのGCなどの、他のタイプのGCにおける問題には使えない。また、オブジェクトピン止め(object pinning)にも対処できない。
特開2010−204955号公報
O. Agesen, "Space and time-efficient hashing of garbage-collected objects",- Theory and Practice of Object Systems, 1999
従って、この発明の目的は、オブジェクト・ハッシュコードの衝突を減らすために、オブジェクト・ハッシュコードのバリエーションを増やすことにある。
この発明の他の目的は、ピン止めオブジェクトに対するオブジェクト・ハッシュコードの付加を可能ならしめることにある。
本発明は、上記課題を解決するためになされたものであり、オブジェクト・ハッシュコードを生成するために、オブジェクトが配置されるヒープ領域毎に、ヒープ毎シードを設けることによって、上記課題を解決する。
すなわち、本発明に従うシステムは、少なくとも、オブジェクト・アドレスと、ヒープ毎シードを組み合わせて、オブジェクト・ハッシュコードを生成する。
本発明に従うシステムは、好適な一側面によれば、オブジェクト・アドレスと、ヒープ毎シードと、オブジェクト・クラスのIDを組み合わせて、オブジェクト・ハッシュコードを生成する。
本発明に従うシステムは、更なる一側面によれば、GCの間に"01"すなわちハッシュされた状態のオブジェクトにオブジェクト・ハッシュコードを付加可能かどうか判断し、もしそうなら、オブジェクト・ハッシュコードを計算してオブジェクトに付加し、状態を"10"に変更する。オブジェクトにオブジェクト・ハッシュコードを付加可能でないなら、オブジェクト・ハッシュコードを計算してヒープ外に配置し、オブジェクトに関連付け、状態を、ピン止めされた(pinned)オブジェクトを示す"11"に変更する。
一方、GCの間にオブジェクトの状態が"11"であるなら、オブジェクトにオブジェクト・ハッシュコードを付加可能かどうか判断し、もしそうなら、オブジェクト・ハッシュコードをヒープ外のテーブルから読み取ってオブジェクトに付加し、状態を"10"に変更し、ヒープ外のオブジェクト・ハッシュコードを削除する。そうでないなら、何もしない。
この発明によれば、ヒープ毎にオブジェクト・ハッシュコードを生成するためのシードを設けることにより、生成されるオブジェクト・ハッシュコードのバリエーションを増やすことができるので、ハッシュの衝突を減らして、オブジェクトを突き止める時間を短縮することができる。
また、場合により、ヒープ外にオブジェクト・ハッシュコードを配置できるようにしたので、ピン止めされたオブジェクトに対しても適宜オブジェクト・ハッシュコードを付加することが可能となる。
本発明を実施するためのハードウェアの一例のブロック図である。 本発明を実施するためのソフトウェアの階層を示す図である。 オブジェクトのヘッダのフォーマットを示す図である。 オブジェクトのヘッダのフォーマットを示す図である。 本発明の動作を説明するための模式図である。 状態ビットの遷移を示す図である。 ハッシュコードを生成するための処理のフローチャートを示す図である。 オブジェクトが別のヒープ領域に移動される際の処理のフローチャートを示す図である。 オブジェクトにハッシュコードを追加することが可能かどうか判断する処理のフローチャートを示す図である。
以下、図面に従って、本発明の実施例を説明する。これらの実施例は、本発明の好適な態様を説明するためのものであり、発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断わらない限り、同一符号は、同一の対象を指すものとする。
図1を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図1において、システム・バス102には、CPU104と、主記憶(RAM)106と、ハードディスク・ドライブ(HDD)108と、キーボード110と、マウス112と、ディスプレイ114が接続されている。CPU104は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標)4、インテル社のCore(商標) 2 DUO、AMD社のAthlon(商標)などを使用することができる。主記憶106は、好適には、2GB以上の容量、より好ましくは、4GB以上の容量をもつものである。
ハードディスク・ドライブ108には、オペレーティング・システム(OS)202(図2)が、格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows(商標) 7、Windows XP(商標)、Windows(商標)2003サーバ、アップルコンピュータのMac OS(商標)などの、CPU104に適合する任意のものでよい。
ハードディスク・ドライブ108にはまた、Apacheなどの、Webサーバとしてシステムを動作させるためのプログラムが保存され、システムの起動時に、主記憶106にロードされる。
ハードディスク・ドライブ108にはさらに、Java(R)仮想マシン(JVM)204(図2)を実現するためのJava(R) Runtime Environmentプログラムが保存され、システムの起動時に、主記憶106にロードされる。JVM204には、本発明の機能が実装されている。
ハードディスク・ドライブ108にはさらに、アプリケーション・プログラムのバイトコード206(図2)が保存されている。
キーボード110及びマウス112は、オペレーティング・システムが提供するグラフィック・ユーザ・インターフェースに従い、ディスプレイ114に表示されたアイコン、タスクバー、テキストボックスなどのグラフィック・オブジェクトを操作するために使用される。
ディスプレイ114は、これには限定されないが、好適には、1024×768以上の解像度をもち、32ビットtrue colorのLCDモニタである。ディスプレイ114は例えば、JVM上で実行されるアプリケーション・プログラムによる動作の結果を表示するために使用される。
通信インターフェース116は、好適には、イーサネット(R)プロトコルにより、ネットワークと接続されている。通信インターフェース116は、クライアント・コンピュータ(図示しない)からApacheが提供する機能により、TCP/IPなどの通信プロトコルに従い、処理リクエストを受け取り、あるいは処理結果を、クライアント・コンピュータ(図示しない)に返す。
図2は、プログラムまたはプロセスの階層を示す図である。図1に示すハードウェアの上で、オペレーティング・システム(OS)202が動作し、オペレーティング・システム202上ではJava(R)仮想マシン(JVM)206が動作する。
アプリケーション・プログラム208は、Java(R)バイトコードから構成され、JVM206上で動作する。JVM206は、アプリケーション・プログラム208のために、主記憶108上にヒープ領域を用意する。アプリケーション・プログラム208は、動作中にヒープ領域上にメモリ領域を獲得して、そこに、生成したオブジェクトを割り付ける。ヒープ領域は、世代別(generational)ヒープ領域である場合、新しいオブジェクトを割り付けるための、少なくとも1つの第1世代の(nursery)ヒープ領域と、少なくとも1つの第2世代の(tenure)ヒープ領域からなり、JVM206は、第1世代のヒープ領域が一杯になったとき、第1世代のヒープ領域でガベージ・コレクション(GC)を行い、生き残ったオブジェクトを第1世代のヒープ領域から、第2世代のヒープ領域に移動する。結果的に、第2世代のヒープ領域には、しばらく生き残っているオブジェクトが集まる。また、第2世代のヒープ領域が一杯になると、JVM206はヒープ領域全体のGCを行う。
一方、非世代別(non-generational)ヒープ領域である場合、ヒープ領域は全て、第1世代のヒープ領域として扱われる。本発明は、世代別ヒープ領域と非世代別ヒープ領域の両方に適用可能である。
図3は、ヒープ領域に割り付けられるオブジェクトのフォーマットの一例を示す図である。図3に示すように、オブジェクト302は、ヘッダ304と、それに続くオブジェクト本体であるデータ308からなる。
ヘッダ304は、TIB(type information block)ポインタと、2ビットの領域306と、ロック・ワードからなる。TIBポインタは、タイプをあらわすオブェクトへのポインタであり、ロック・ワードには、オブジェクトのロックやGCフラグとして使用される値が格納される。
2ビットの領域306は、下記のことを示すために使用される:
・"00" = ハッシュされていない。すなわち、オブジェクト・ハッシュコードはまだ存在しない。
・"01" = ハッシュされている。オブジェクト・ハッシュコードは、オブジェクト・アドレスから計算することができる。
・"10" = ハッシュされ、移動された。オブジェクト・ハッシュコードが、オブジェクトに付加されている。
・"11" = ハッシュされ、ハッシュコードはヒープ外のテーブルに保存されている。たとえば、ピン止めされた(pinned)オブジェクトの移動が失敗したときにこうなる。
2ビットの領域306は、図5〜図9のフローチャートで示す実施例では、状態ビット(state bits)とも称する。
なお、図3のオブジェクトのフォーマットでは、TIBポインタの隣に2ビットの領域306が配置されるが、図4に示すように、2ビットの領域406が、ロック・ワードの隣に配置される、別のオブジェクトのフォーマットを使用してもよい。
図5は、本発明の処理を模式的に示す図である。図5において、第1の(nursery)ヒープ領域502と、第2の(tenure)ヒープ領域504が示されている。第1のヒープ領域502には、オブジェクト506、508及び510が示されている。各々のオブジェクトは、図3あるいは図4に示した2ビット領域の値が示されている。
第1のヒープ領域502と第2のヒープ領域504にはそれぞれ、シードの値が関連付けられている。シードの値はヒープ外のメモリの所定の管理領域に配置される。このようなシードは、ヒープ毎に与えられるので、ヒープ毎シード(per-heap-area seed)と呼ぶことにする。ヒープ毎シードの値は、第1のヒープ領域502のGC時、あるいは第2のヒープ領域504のコンパクション(compaction)時などに、好適には疑似乱数を生成することで更新される。
2ビットの値"01"をもつオブジェクト510は、ハッシュコードを付与されているが、図5では図示を省略している。
オブジェクト510が第2のヒープ領域504に移動されると、2ビットの値"10"をもつオブジェクト512となり、本発明に従い、オブジェクト510のクラスのID518と、オブジェクト510のオブジェクト・アドレス520と、第1のヒープ領域502のシード514という3つの値から、ハッシュコード計算処理522によってハッシュコードが計算され、それは、ハッシュコード524としてオブジェクト512の末尾に付加される。
なお、この場合、ハッシュコード計算処理522は、オブジェクト510のクラスのID518と、オブジェクト510のオブジェクト・アドレス520と、第1のヒープ領域502のシード514という3つの値からハッシュコードを計算するのではなく、オブジェクト510のオブジェクト・アドレス520と、第1のヒープ領域502のシード514という2つの値から計算するようにしてもよい。
一方、オブジェクト506の末尾にハッシュコードを付加しようとしたとき、別のオブジェクト508が隣接していて、ハッシュコードが付加できない場合がある。このような場合、本発明によれば、ハッシュコード計算処理522によって計算されたハッシュコード526を、ヒープ外の領域528に配置して、オブジェクト506に関連付けることになる。より具体的には、ハッシュコード526が配置された領域に、オブジェクト506へのポインタを配置するようにする。
図6は、オブジェクトの2ビット・コードに関する状態遷移図である。最初はオブジェクトの2ビット・コードは"00"であり、ハッシュコードが要求されると、2ビット・コードは"01"となる。"01"の状態から、オブジェクトが移動されると、オブジェクトの2ビット・コードは"10"となる。
一方、"01"の状態から、オブジェクトの移動に失敗すると、ピン止めされたオブジェクトの移動に失敗したとして、そのせいでハッシュコードを付加できなくなり、オブジェクトの2ビット・コードは"11"となる。
"11"の状態から、ピン止め解除後、オブジェクトが移動されると、オブジェクトの2ビット・コードは"10"となる。
次に、図7のフローチャートを参照して、JVM204による、ハッシュコード生成処理について説明する。図7のステップ702では、JVM204は、ハッシュコードを生成しようとするオブジェクトの状態ビット、すなわち、2ビット・コードを調べる。
状態ビットが"00"なら、JVM204は、ステップ704で状態ビットを"01"に変更して、ステップ706に進む。一方、状態ビットが"01"なら、JVM204は、直接ステップ706に進む。
ステップ706では、JVM204は、オブジェクトのアドレスを使用して、そのオブジェクトが存在するヒープのシードをロードする。そして、ステップ708で、ハッシュコード = f(オブジェクトのアドレス,オブジェクト・クラスのID,シード値)によりハッシュコードを計算する。ハッシュコード計算の具体的な式の例は、これには限定しないが、下記のとおりである。ハッシュコード = (オブジェクトのアドレス >> 3) XOR シード値 XOR オブジェクト・クラスのID
これは、図5では、ハッシュコード計算処理522に対応する。
この式は、下記のように、オブジェクト・クラスのIDを使わないものであってもよい。
ハッシュコード = (オブジェクトのアドレス >> 3) XOR シード値
また、ここに示すハッシュコードの計算式はほんの一例であって、ビットシフト演算、XORなどの既知の演算を組み合わせて、さまざまな式を使用することができる。
ステップ702に戻って、状態ビットが"10"なら、JVM204は、ステップ710で、オブジェクト・フィールドからハッシュコードを読み取る。そのハッシュコードは、図5では例えば、ハッシュコード524として示されている。
ステップ702に戻って、状態ビットが"11"なら、JVM204は、ステップ712で、オブジェクト・アドレスをキーとして使用して外部テーブル中でハッシュコードをルックアップする。これは、図5では例えば、ハッシュコード526として示されている。
次に、図8のフローチャートを参照して、JVM204による、オブジェクトの移動処理について説明する。
図8において、ステップ802からステップ818は、ヒープ領域におけるオブジェクト移動の際のオブジェクト毎の処理である。
ステップ804では、JVM204は、ステップ804で、オブジェクトの状態ビット、すなわち、2ビット・コードを調べる。
状態ビットが"01"なら、JVM204は、ステップ806で、オブジェクトにハッシュコードを追加することが可能かどうか判断する。この判断処理の詳細は、図9のフローチャートを参照して、後で説明する。
オブジェクトにハッシュコードを追加することが可能というのは例えば、図5のオブジェクト512に、ハッシュコード524を追加する場合に対応する。オブジェクトにハッシュコードを追加することが可能であるなら、JVM204は、ステップ808で、図7のフローチャートで示した処理によりハッシュコードを計算し、オブジェクトに追加し、状態ビットを"10"に変更する。
オブジェクトにハッシュコードを追加することが可能でないというのは例えば、図5のオブジェクト506に、ハッシュコード526を関連付ける場合に対応する。オブジェクトにハッシュコードを追加することが可能でないなら、JVM204は、ステップ810で、図7のフローチャートで示した処理によりハッシュコードを計算し、それをヒープ外に保存し、状態ビットを"11"に変更する。
ステップ804に戻って、状態ビットが"00"または"10"なら、ハッシュされていない、またはハッシュされ移動されているのどちらかなので、ステップ812で、ハッシュコードについては、オブジェクトに何もしない。
ステップ804に戻って、状態ビットが"11"なら、ステップ814で、JVM204は、オブジェクトにハッシュコードを追加することが可能かどうか判断する。この判断処理はやはり、図9のフローチャートで説明されるものである。
そして、オブジェクトにハッシュコードを追加することが可能でないなら、単にステップ812に進む。
オブジェクトにハッシュコードを追加することが可能であるなら、JVM204は、ステップ816で図7のフローチャートで示した処理によりハッシュコードを取得し、オブジェクトに追加し、ヒープ外のテーブルから、オブジェクトに関連付けられていたハッシュコードを削除し、状態ビットを"10"に変更する。
こうして、ステップ802からステップ818までで、ヒープ領域におけるオブジェクト毎の処理を終了すると、JVM204はステップ820で、疑似乱数により、当該ヒープの新しいシードを選ぶ。
図9は、図8のフローチャートで使用される、オブジェクトにハッシュコードを追加することが可能かどうか判断する処理のフローチャートを示す図である。
ステップ902でJVM204は、オブジェクトが移動されつつあるかどうか判断し、もしそうなら、ステップ904で、あて先に追加の4バイトが利用可能かどうか判断し、もしそうならステップ906で追加可能と判断し、そのことを所定のリターンコードにセットして戻る。そうでないなら、ステップ908で追加不可能と判断し、そのことを所定のリターンコードにセットして戻る。
オブジェクトが移動されつつあるのでないなら、JVM204は、ステップ910でオブジェクトの後ろに4バイトの空きスペースがあるかどうか判断し、もしそうならステップ906に進む。
オブジェクトの後ろに4バイトの空きスペースがないなら、JVM204は、ステップ912で、このオブジェクトの後ろにオブジェクトがあり、そのオブジェクトが移動されつつあるかどうか判断する。そして、もしそうならステップ906に進み、そうでないなら、ステップ908で追加不可能と判断し、そのことを所定のリターンコードにセットして戻る。
以上、Java(R)仮想マシン上での実装として、本発明の実施例を説明したが、この発明は、特定のハードウェア及びオペレーティング・システムあるいはアプリケーション・プログラムに限定されないことに留意されたい。すなわち、ヒープ領域に割り付けられたオブジェクトにハッシュコードを追加する機能をもつ任意のオペレーティング・システムあるいは仮想マシンに適用可能である。また、クラウド環境で使用される大規模環境のシステム上でも適用可能である。あるいは、スタンドアロンの環境で動作する場合にも適用可能である。
104 CPU
106 主記憶
108 ハードディスク・ドライブ
202 オペレーティング・システム
204 JVM
502 第1のヒープ領域
504 第2のヒープ領域
506〜512 オブジェクト
524、526 ハッシュコード

Claims (15)

  1. コンピュータの処理により、ヒープ領域に割り付けられたオブジェクトを識別するためのハッシュコードを生成する方法であって、
    前記コンピュータの処理により、前記ヒープ領域毎に、シード値を生成するステップと、
    前記コンピュータの処理により、前記オブジェクトのアドレスと、前記オブジェクトが割り付けられているヒープ領域の前記シード値に基づき、前記ハッシュコードを生成するステップとを有する、
    方法。
  2. 記ハッシュコードを生成するステップが、前記オブジェクトのアドレスと、記シード値のみならず、前記オブジェクトのクラスのIDの値にも基づく、請求項1に記載の方法。
  3. 前記シードが擬似乱数によって生成される、請求項1に記載の方法。
  4. 前記ヒープ領域が、相対的に新しいオブジェクトを割り付けるための第1のヒープ領域と、相対的に古いブジェクトを割り付けるための第2のヒープ領域を有し、
    前記第1のヒープ領域から前記第2のヒープ領域にオブジェクトが移動されることに応答して、前記オブジェクトにハッシュコードを付加することが可能かどうか判断するステップと、
    前記オブジェクトにハッシュコードを付加することが可能であると判断されると、ハッシュコードを生成して、前記オブジェクトに追加するステップをさらに有する、請求項1に記載の方法。
  5. 前記オブジェクトにハッシュコードを付加することが可能でないなら、ハッシュコードを生成してヒープ外に配置し、前記オブジェクトに関連付けるステップをさらに有する、請求項4に記載の方法。
  6. コンピュータの処理により、ヒープ領域に割り付けられたオブジェクトを識別するためのハッシュコードを生成するプログラムであって、
    前記コンピュータに、
    前記ヒープ領域毎に、シード値を生成するステップと、
    前記オブジェクトのアドレスと、前記オブジェクトが割り付けられているヒープ領域の前記シード値に基づき、前記ハッシュコードを生成するステップを実行させる、
    プログラム。
  7. 記ハッシュコードを生成するステップが、前記オブジェクトのアドレスと、記シード値のみならず、前記オブジェクトのクラスのIDの値にも基づく、請求項6に記載のプログラム。
  8. 前記シードが擬似乱数によって生成される、請求項6に記載のプログラム。
  9. 前記ヒープ領域が、相対的に新しいオブジェクトを割り付けるための第1のヒープ領域と、相対的に古いブジェクトを割り付けるための第2のヒープ領域を有し、
    前記第1のヒープ領域から前記第2のヒープ領域にオブジェクトが移動されることに応答して、前記オブジェクトにハッシュコードを付加することが可能かどうか判断するステップと、
    前記オブジェクトにハッシュコードを付加することが可能であると判断されると、ハッシュコードを生成して、前記オブジェクトに追加するステップをさらに前記コンピュータに実行させる、請求項6に記載のプログラム。
  10. 前記オブジェクトにハッシュコードを付加することが可能でないなら、ハッシュコードを生成してヒープ外に配置し、前記オブジェクトに関連付けるステップをさらに前記コンピュータに実行させる請求項9に記載のプログラム。
  11. コンピュータの処理により、ヒープ領域に割り付けられたオブジェクトを識別するためのハッシュコードを生成するシステムであって、
    前記ヒープ領域毎に、シード値を生成する手段と、
    前記オブジェクトのアドレスと、前記オブジェクトが割り付けられているヒープ領域の前記シード値に基づき、前記ハッシュコードを生成する手段を有する、
    システム。
  12. 記ハッシュコードを生成する手段が、前記オブジェクトのアドレスと、記シード値のみならず、前記オブジェクトのクラスのIDの値にも基づく、請求項11に記載のシステム。
  13. 前記シードが擬似乱数によって生成される、請求項11に記載のシステム。
  14. 前記ヒープ領域が、相対的に新しいオブジェクトを割り付けるための第1のヒープ領域と、相対的に古いブジェクトを割り付けるための第2のヒープ領域を有し、
    前記第1のヒープ領域から前記第2のヒープ領域にオブジェクトが移動されることに応答して、前記オブジェクトにハッシュコードを付加することが可能かどうか判断する手段と、
    前記オブジェクトにハッシュコードを付加することが可能であると判断されると、ハッシュコードを生成して、前記オブジェクトに追加する手段をさらに有する、請求項11に記載のシステム。
  15. 前記オブジェクトにハッシュコードを付加することが可能でないなら、ハッシュコードを生成してヒープ外に配置し、前記オブジェクトに関連付ける手段をさらに有する、請求項14に記載のシステム。
JP2012021187A 2012-02-02 2012-02-02 オブジェクトを特定するためのハッシュコードを生成するための方法、プログラム及びシステム Expired - Fee Related JP5883300B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012021187A JP5883300B2 (ja) 2012-02-02 2012-02-02 オブジェクトを特定するためのハッシュコードを生成するための方法、プログラム及びシステム
US13/752,435 US9135169B2 (en) 2012-02-02 2013-01-29 Method, program and system for generating hash codes to identify objects

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012021187A JP5883300B2 (ja) 2012-02-02 2012-02-02 オブジェクトを特定するためのハッシュコードを生成するための方法、プログラム及びシステム

Publications (2)

Publication Number Publication Date
JP2013161186A JP2013161186A (ja) 2013-08-19
JP5883300B2 true JP5883300B2 (ja) 2016-03-09

Family

ID=48903851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012021187A Expired - Fee Related JP5883300B2 (ja) 2012-02-02 2012-02-02 オブジェクトを特定するためのハッシュコードを生成するための方法、プログラム及びシステム

Country Status (2)

Country Link
US (1) US9135169B2 (ja)
JP (1) JP5883300B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3200080B1 (en) * 2015-12-16 2021-12-22 Tata Consultancy Services Limited Methods and systems for memory suspect detection
CN111158590B (zh) * 2019-12-17 2021-07-06 苏州浪潮智能科技有限公司 一种解决哈希冲突的方法和设备
US11271735B1 (en) * 2020-08-26 2022-03-08 Micron Technology, Inc. Apparatuses, systems, and methods for updating hash keys in a memory
US11755373B2 (en) 2020-10-07 2023-09-12 Oracle International Corporation Computation and storage of object identity hash values
CN112650645B (zh) * 2020-12-24 2023-05-30 大连市共进科技有限公司 堆内存使用情况监测方法、装置和5g基站设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5542078A (en) * 1994-09-29 1996-07-30 Ontos, Inc. Object oriented data store integration environment for integration of object oriented databases and non-object oriented data facilities
GB9604522D0 (en) * 1996-03-02 1996-05-01 Univ Strathclyde Databases
US6233621B1 (en) * 1996-04-30 2001-05-15 Sun Microsystems, Inc. System and method for space efficient hashcode allocation
US6115782A (en) * 1997-04-23 2000-09-05 Sun Micosystems, Inc. Method and apparatus for locating nodes in a carded heap using a card marking structure and a node advance value
US6480862B1 (en) * 1999-04-23 2002-11-12 International Business Machines Corporation Relation-based ordering of objects in an object heap
US20010042204A1 (en) * 2000-05-11 2001-11-15 David Blaker Hash-ordered databases and methods, systems and computer program products for use of a hash-ordered database
US20060143454A1 (en) * 2004-05-27 2006-06-29 Silverbrook Research Pty Ltd Storage of multiple keys in memory
US7802232B2 (en) * 2006-03-31 2010-09-21 Microsoft Corporation Software robustness through search for robust runtime implementations
US20070234296A1 (en) * 2006-03-31 2007-10-04 Microsoft Corporation Software variation for robustness through randomized execution contexts
WO2007148244A1 (en) * 2006-06-20 2007-12-27 Nxp B.V. Random number generator system, method for generating random numbers
JP5044816B2 (ja) * 2007-09-06 2012-10-10 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトを記憶・管理するシステム
US8612956B2 (en) * 2007-12-05 2013-12-17 International Business Machines Corporation Efficient object profiling for optimizing object locality
JP4852621B2 (ja) 2009-03-03 2012-01-11 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム中のオブジェクトの割り付け場所を追跡する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム
US8161244B2 (en) * 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
US8386787B2 (en) * 2009-08-31 2013-02-26 Apple Inc. Hash function using a heap modeling process
TW201312980A (zh) * 2011-05-03 2013-03-16 Interdigital Patent Holdings 在網際網路中內容識別、檢索及路由

Also Published As

Publication number Publication date
JP2013161186A (ja) 2013-08-19
US9135169B2 (en) 2015-09-15
US20130204912A1 (en) 2013-08-08

Similar Documents

Publication Publication Date Title
JP5883300B2 (ja) オブジェクトを特定するためのハッシュコードを生成するための方法、プログラム及びシステム
JP6087928B2 (ja) 循環グラフにおけるオブジェクト寿命の管理
US9767019B2 (en) Pauseless garbage collector write barrier
CN108733507B (zh) 文件备份和恢复的方法和设备
US9491238B2 (en) Rapid client-side component processing based on component relationships
US10002074B2 (en) Non-intrusive storage of garbage collector-specific management data
CN102419770B (zh) 文件共享系统及实现文件共享的方法、文件索引服务设备
JP4952308B2 (ja) メモリ共有システム、方法、及び、プログラム
US9229858B2 (en) Concurrent garbage collector thread
CN104079613B (zh) 用于多租户间共享应用程序对象的方法和系统
JP2011170667A (ja) ファイル同期システム、ファイル同期方法およびファイル同期プログラム
JP2015524593A (ja) ビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法
US7991807B2 (en) Method and system for garbage collection
WO2019020651A3 (fr) Un système de communication et un procédé d'accès et de déploiement des microservices éphémères sur une plateforme hétérogène
CN106657439B (zh) 网络地址转换映射表的操作方法及装置
JP2004094935A (ja) オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体
JP6418419B2 (ja) ハードディスクがアプリケーションコードを実行するための方法および装置
CA2707249C (en) Native interface optimization for read-only arrays
JP5889270B2 (ja) スタック・スキャンのコストを削減するための方法、プログラム及びシステム
JP6607044B2 (ja) サーバー装置、分散ファイルシステム、分散ファイルシステム制御方法、および、プログラム
JP2014225077A (ja) コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム
JP4959781B2 (ja) オブジェクト生成地点記録方法およびプログラム
JP6223002B2 (ja) コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム
JP6103994B2 (ja) 文字列データ処理方法、プログラム及びシステム
JP2014007514A (ja) 暗号化通信システム、鍵センタ装置、クライアント装置、暗号化方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140901

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160205

R150 Certificate of patent or registration of utility model

Ref document number: 5883300

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees