JP6173031B2 - コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム - Google Patents

コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム Download PDF

Info

Publication number
JP6173031B2
JP6173031B2 JP2013103042A JP2013103042A JP6173031B2 JP 6173031 B2 JP6173031 B2 JP 6173031B2 JP 2013103042 A JP2013103042 A JP 2013103042A JP 2013103042 A JP2013103042 A JP 2013103042A JP 6173031 B2 JP6173031 B2 JP 6173031B2
Authority
JP
Japan
Prior art keywords
collection
program
collection object
jvm
computer
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
JP2013103042A
Other languages
English (en)
Other versions
JP2014225077A (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 JP2013103042A priority Critical patent/JP6173031B2/ja
Publication of JP2014225077A publication Critical patent/JP2014225077A/ja
Application granted granted Critical
Publication of JP6173031B2 publication Critical patent/JP6173031B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、コンピュータにおいてオブジェクトを管理するための技法に関し、より詳しくは、必要に応じてオブジェクトのサイズを縮小するための技法に関する。
従来より、Java(R)などの処理環境において、ハッシュ表や集合型、コレクション・オブジェクトなどの抽象データ型が標準APIに含まれており、これらを用いると、実行時でないと総量が分からないデータも簡単に扱うことができる。
これらのAPIの実装では、内部で配列を使う場合がある。例えば、一般的なハッシュ表の実装法の1つに、オープン・ハッシュ表がある。この実装では、ハッシュ表はバケット(bucket)配列(もしくはバケット表)と呼ばれる配列と、バケット配列の各要素から指されるリンクリストで構成される。キーとして与えられた値から適当なハッシュ関数を用いてバケット表のインデックスを計算し、対応する要素に繋がっているリンクリストに、キーと値のペアを格納する。
バケット配列のサイズはライブラリが適当に決めれば良いのであるが、ハッシュ表に含まれる要素数に対して小さすぎるとリンクリストが長くなって実行速度が低下する恐れがある。逆に、大きすぎると、リンクリストが繋がっていない要素が多くなって、メモリが無駄になる。なお、バケット配列については、Alfred V. Aho, Jeffrey D. Ullman, John E. Hopcroft, "Data Structures and Algorithms" (Addison-Wesley Series in Computer Science and Information Pr), 1983などの文献を参照されたい。
そのような内部配列を使用する場合、適当な初期サイズの配列を用意しておき、データが増えて配列が一杯になったら、より大きな配列を作成してデータをコピーする実装が一般的である。しかし、挿入されるデータ数によっては、配列が無駄に大きい場合がある。データが挿入されなかったり、1〜3個程度のデータしか挿入されなかった場合は、初期サイズの配列でも大きすぎてメモリが無駄になる。また、配列を大きく拡張したあとで挿入されたデータが少ないために、利用率が1/3以下にとどまるものも少なくない。
従来技術として、特開2009−64217号公報は、重複した文字列データをGC時に一つにまとめる、ストリングGC技法を開示するものであるが、コレクション・オブジェクトを個別に縮小することには適用できない。
http://www.gnu.org/software/guile/manual/html_node/Hash-Table-Reference.htmlには、コレクション・オブジェクトにデータの挿入および削除する時に、必要に応じて内部データ構造を拡大および縮小する処理は、既存のプログラムでも実装されている。しかし、起動時に設定ファイルなどを読み込んで、その内容をハッシュ表などに保持し、その後は参照のみ行う場合、データ削除時に縮小する方法は効果がない。
http://blog.gmane.org/gmane.lisp.scheme.mit-scheme.devel/month=20110901にある、Scheme開発者のメーリングリストでは、GC時にハッシュ表をリハッシュ(rehash)してバケット配列を縮小することが議論されているが、そこにあるのは、GC中にハッシュ表オブジェクトのリハッシュ関数を呼ぶ事の是非についての議論だけである。GCがハッシュ表オブジェクトの内容を直接書き換えることで、効率的に実装できることについては言及されていない。また、ハッシュ表以外のデータ構造(JavaのArrayListなど)についての議論はない。
http://msdn.microsoft.com/ja-jp/library/system.collections.arraylist%28v=vs.80%29.aspxなどに記述がある、.Net FrameworkのArrayListクラスは、内部データ構造のキャパシティを指定するTrimToSizeメソッドを持つ。しかし、HashTableクラスにはキャパシティを指定するAPIを持たない。そして、実行時システムに組み込まないと、無駄なメモリ使用を削減できるかどうかがAPI仕様に依存する。
特開2009−64217号公報
http://www.gnu.org/software/guile/manual/html_node/Hash-Table-Reference.html http://blog.gmane.org/gmane.lisp.scheme.mit-scheme.devel/month=20110901 http://msdn.microsoft.com/ja-jp/library/system.collections.arraylist%28v=vs.80%29.aspx
従って、この発明の目的は、既存のアプリケーションを変更することなく、オブジェクト・サイズの無駄を自動的に削減できるシステムを提供することにある。
この発明は、上記課題を解決するものであって、初期化によるデータ挿入が終わっても利用率の低いコレクション・オブジェクトを、プログラム言語実行環境が自動的にキャパシティを縮小するシステムを実現する。ここでの好適なプログラム言語実行環境は、JVMである。
すなわち、この発明のシステムは、初期化が終わり更新が少なくなると予想できるコレクション・オブジェクトを定期的に抽出し、内部データ構造の利用率を調べ、利用率が低い場合は、実行時システムが内部データ構造のキャパシティを自動的に縮小する。このとき、自動的に縮小することで、アプリケーション開発者の技量に依存せずに無駄なメモリ使用を削減できる。
たとえば、クラウド環境では、一つのアプリケーションが無駄にメモリを使用すると、他の仮想マシン上で動くアプリケーションも含め、同じ物理マシン上で実行される全てのアプリケーションの使用可能な物理メモリ量が減少し、マシンの利用効率が低下する。よって、自動的に縮小する処理は効果が大きい。
また、キャパシティの自動縮小後にデータが追加されて内部配列が拡張されると、自動縮小処理は不要なオーバーヘッドとなってしまう。このようなことが発生する可能性を低減するために、初期化が終わり更新が少なくなると予想されるコレクションだけを自動縮小する。
好適には、(クラスライブラリを含む)実行時システムが実装を知っているコレクションオブジェクトをキャパシティ自動縮小の対象とし、縮小処理を実行時システムに組み込むことで、クラスライブラリのAPI仕様に依存せず、効率のよい実装を可能にする。
初期化が終わり更新が少なくなると予想できるかどうかの判断は、たとえば以下の方法を用いる。
− プログラム言語実行環境、例えばJVMが世代別GCを用いている場合、コレクション・オブジェクトがtenured領域に移動された場合。
− Mark and sweep GCを用いている場合、コンパクション(compaction)を2回以上生き延びたオブジェクトの場合。
− あるコレクション・オブジェクトに対し、get()メソッドなど、データの挿入・削除以外の操作が一定回数以上実行された場合。
− コレクションに含まれるデータ数の変動幅が、一定期間充分小さく(たとえば10%以内)なった場合。
− 好適には、自動縮小対象を、まだ一度も自動縮小していないコレクション・オブジェクトに限定する。
この発明の別の側面によれば、縮小処理をGC時に行うことで、効率よく実装する。すなわち、GCによるオブジェクト移動処理では元々オブジェクト参照を修正が必要なので、キャパシティ縮小も同時に行えば、縮小後のキャパシティにあわせてデータの再配置するためにオブジェクト参照を修正する処理が、追加オーバーヘッドなしで実現できる。
この発明によれば、ほとんど追加コストなく、オブジェクト・サイズの無駄を自動的に削減できるシステムが提供される。このようなシステムは特に、クラウド環境でメモリ利用効率を向上させる効果が大きい。
本発明を実施するためのハードウェアの一例のブロック図である。 本発明を実施するためのソフトウェアの階層を示す図である。 GCによるHashMapオブジェクト移動処理のフローチャートを示す図である。 HashMap内のすべてのエントリを移動するフローチャートを示す図である。 GCによるArrayListオブジェクト移動処理のフローチャートを示す図である。
以下、図面に従って、本発明の実施例を説明する。これらの実施例は、本発明の好適な態様を説明するためのものであり、発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断わらない限り、同一符号は、同一の対象を指すものとする。
図1を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図1において、システム・バス102には、CPU104と、主記憶(RAM)106と、ハードディスク・ドライブ(HDD)108と、キーボード110と、マウス112と、ディスプレイ114が接続されている。CPU104は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のCore(商標) i3、Core(商標) i5、Core(商標) i7、Xeon(R)、AMD社のAthlon(商標)、Phenom(商標)、Sempron(商標)などを使用することができる。主記憶106は、好適には、8GB以上の容量、より好ましくは、16GB以上の容量をもつものである。
ハードディスク・ドライブ108には、オペレーティング・システム(OS)202(図2)が、格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows(商標) 7、Windows 8(商標)、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などの通信プロトコルに従い、処理リクエストを受け取り、あるいは処理結果を、クライアント・コンピュータ(図示しない)に返す。
アプリケーション・プログラム208は、Java(R)バイトコードから構成され、JVM204上で動作する。JVM204は、本発明のオブジェクト自動縮小機能を備えた、カスタマイズされたJVMである。
JVM204は、アプリケーション・プログラム208のために、主記憶108上にヒープ領域を用意する。アプリケーション・プログラム208は、動作中にヒープ領域上にメモリ領域を獲得して、そこに、生成したオブジェクトを割り付ける。
JVM204は、世代別(generational)ヒープ領域をサポートするものであってもよい。世代別ヒープ領域である場合、新しいオブジェクトを割り付けるための、少なくとも1つの第1世代の(nursery)ヒープ領域と、少なくとも1つの第2世代の(tenured)ヒープ領域からなり、JVM204は、第1世代のヒープ領域が一杯になったとき、第1世代のヒープ領域でガベージ・コレクション(GC)を行い、第1世代のヒープ領域のGCを複数回生き残ったオブジェクトを第1世代のヒープ領域から、第2世代のヒープ領域に移動する。結果的に、第2世代のヒープ領域には、しばらく生き残っているオブジェクトが集まる。また、第2世代のヒープ領域が一杯になると、JVM204はヒープ領域全体のGCを行う。
JVM204は、非世代別(non-generational)ヒープ領域をサポートするものであってもよい。一方、非世代別ヒープ領域である場合、ヒープ領域は全て、第1世代のヒープ領域として扱われる。本発明は、世代別ヒープ領域と非世代別ヒープ領域の両方に適用可能である。
さらには、JVM204は、マーク・アンド・スイープ(mark and sweep)で、GCを実装するものであってもよい。
JVM204は、間欠的に、内部配列を含むコレクション・オブジェクトの利用率を調べ、その利用率が所定の利用率以下であることに応答して、前記コレクション・オブジェクトのうち、初期化が終わり更新が少なくなると予想できるコレクション・オブジェクトに対してのみ、内部配列のサイズを縮小する。
このとき例えば、利用率は次のようにして調べられる。すなわち、Java(R)クラスライブラリなど汎用的なハッシュ表の実装では、要素数を返すAPIが用意されていたり、要素数が増えたときにrehashを行う必要があるので、内部変数として要素数を保持している。そこで、バケット配列のサイズから求める「バケット配列のサイズに対して適切な要素数」と、内部変数に保持している要素数の比から利用率を求める。
JVM204は、好適には、GCに応答して、前記コレクション・オブジェクトのうち、初期化が終わり更新が少なくなると予想できるコレクション・オブジェクトに対してのみ、内部配列のサイズを縮小する。JVM204は、下記の条件に従い、コレクション・オブジェクトが初期化が終わり更新が少なくなると予想する。
− プログラム言語実行環境、例えばJVMが世代別GCを用いている場合、コレクション・オブジェクトが第2世代の領域に移動された場合。
− Mark and sweep GCを用いている場合、コンパクション(compaction)を2回以上生き延びたオブジェクトの場合。
− あるコレクション・オブジェクトに対し、get()メソッドなど、データの挿入・削除以外の操作が一定回数以上実行された場合。
− コレクションに含まれるデータ数の変動幅が、一定期間充分小さく(たとえば10%以内)なった場合。
− 好適には、自動縮小対象を、まだ一度も自動縮小していないコレクション・オブジェクトに限定する。
ここで、Mark and sweep GCでは、GCを繰り返すうちにヒープ領域が断片化する傾向にある。そのため、いわゆるデフラグのような処理を行って断片化を解消する処理を、GCの分野ではcompactionと呼ぶ。compactionにより断片化を解消する処理については、http://www.ibm.com/developerworks/library/j-ibmjava2/のoptthruputの章などを参照されたい。また、本発明のために、オブジェクトに「過去にcompactionを生き延びたかどうか」のフラグをつけられる。GCがcompactionを行う際に、まだ生きているコレクション・オブジェクトを見つけたら、このフラグが立っているかどうかを調べる。このフラグが立っていれば、過去に1回以上compactionを生き延び、今回のcompactionも生き延びたので、2回以上生き延びたことが分かる。
また、この発明によれば、各コレクション・オブジェクトに、get()メソッド(その他、値を返す機能をもつ、size()などのメソッド)が何回呼ばれたかを記録する変数を用意して、呼び出し回数が把握される。ここでの一定回数は、数百から1000程度が妥当である。
なお、発明の別の側面によれば、縮小処理をGC時に行うことで、効率よく実装する。すなわち、GCによるオブジェクト移動処理では元々オブジェクト参照を修正が必要なので、キャパシティ縮小も同時に行えば、縮小後のキャパシティにあわせてデータの再配置するためにオブジェクト参照を修正する処理が、追加オーバーヘッドなしで実現できる。
内部配列の縮小と移動を同時に行えば、移動先のメモリ領域に縮小後のサイズの内部配列を確保すればよく、縮小処理のために内部配列を別途アロケートする必要がなくなる。さらに、オブジェクトの移動は元々コストがかかる処理なので、バケット配列のインデックス計算などrehash処理のコストは、移動処理のコストと比較すると無視できる。
また、コレクション・オブジェクトの初期化が終わったかどうかの判断を、GCが通常行う処理と同時に行えるので、自動縮小の対象となるオブジェクトを検索するための追加コストがない。
GCによるオブジェクト移動はオブジェクト単位で行われるので、移動と同時にオブジェクトがコレクションか否かや利用率などを調べることで、自動縮小対象のオブジェクトを追加コストなしに検索できる。また、世代別GCを用いている場合、第1世代領域から第2世代領域に移動されるオブジェクトは一定期間以上長生きしているので、そのようなコレクション・オブジェクトを自動縮小の対象とすれば、初期化が終わって更新が少なくなったと予想できるオブジェクトを、追加コストなしに検索できる。
Mark and sweep GCを使っている場合、compactionが行われる時にオブジェクトが移動されるので、同時に自動縮小対象のオブジェクトかどうかを検査すれば、追加コストなしに対象オブジェクトを検索できる。
次に、以上のようにして初期化が終わり更新が少なくなると予想できるコレクション・オブジェクトが特定できた場合の処理を、HashMapオブジェクトとArrayListオブジェクトの各々について、図3〜5のフローチャートを参照して説明する。
図3及び図4は、GCによるHashMapオブジェクトの移動処理のフローチャートを示す図である。
図3のステップ302において、JVM204は、移動先にHashMapオブジェクトのメモリを確保し、内容をコピーする。
ステップ304において、JVM204は、移動先に縮小後のバケット配列のサイズで、メモリを確保する。
ステップ306において、JVM204は、HashMapの内のすべてのエントリを移動して、処理を終わる。
図4は、図3のステップ306の、より詳細な処理のフローチャートを示す図である。
図4のステップ402で、JVM204は、移動してないエントリがあるかどうか判断し、そうでないなら、直ちに戻る。
まだ移動してないエントリがあるなら、JVM204は、ステップ404で移動元のバケット配列からエントリを取り出し、ステップ406で移動先にエントリのメモリを確保し、内容をコピーする。
次にJVM204は、ステップ408で、エントリのハッシュ値から、移動先バケット配列のインデックスを求め、ステップ410で移動先バケット配列の、ステップ408で求めたインデックスのリストに、移動先のエントリをつなげて、ステップ402に戻る。
図5は、GCによるArrayListオブジェクトの移動処理であり、ステップ502において、JVM204は、移動先にArrayListオブジェクトのメモリを確保し、内容をコピーする。
ステップ504において、JVM204は、移動先に縮小後の内部配列のサイズで、メモリを確保する。
次にステップ506において、JVM204は、内部配列内の有効な要素を、移動先の内部配列にコピーして、処理を終わる。
上記実施例では、HashMap及びArrayListの例で説明したが、本発明はこれには限定されず、ConcurrentHashMap、LinkedListなど、AbstractCollection、AbstractList、AbstractMapなどの抽象コレクション・オブジェクトのクラスを継承する、任意のオブジェクトに適用可能である。
以上、この発明を、Java(R)処理系における処理を例として説明してきたが、この発明はそれには限定されず、配列をもつオブジェクトを縮小する処理が可能な任意のオペレーティング・システムあるいは処理系の下で実装可能であることを理解されたい。
104 CPU
106 主記憶
108 ハードディスク・ドライブ
202 オペレーティング・システム
204 JVM

Claims (13)

  1. コンピュータの処理により、コンピュータのメモリを管理する方法であって、
    内部配列を含むコレクション・オブジェクトを生成するステップと、
    間欠的に前記コレクション・オブジェクトの利用率を調べるステップと、
    前記利用率が所定の利用率以下であることに応答して、前記コレクション・オブジェクトのうち、初期化が終わり更新が少なくなると予想できるコレクション・オブジェクトに対してのみ、内部配列のサイズを縮小するステップを有する、
    方法。
  2. 前記コンピュータは、プログラム言語実行環境を実装するものである、請求項1に記載の方法。
  3. 前記プログラム言語実行環境がJVMである、請求項2に記載の方法。
  4. 前記内部配列のサイズを縮小するステップは、GC時に実行される、請求項3に記載の方法。
  5. 前記初期化が終わり更新が少なくなると予想できるコレクション・オブジェクトであるとの判断は、以下の(a)、(b)、(c)あるいは(d)どれかに基づき行われる、請求項4に記載の方法。
    (a) JVMが世代別GCを用いている場合、コレクション・オブジェクトが第2世代領域に移動された場合、
    (b) Mark and sweep GCを用いている場合、compactionを2回以上生き延びたオブジェクトの場合、
    (c) get()メソッドなどによって、データの挿入・削除以外の操作が一定回数以上実行さ
    れたオブジェクトの場合、
    (d) 自動縮小対象を、まだ一度も自動縮小していないコレクション・オブジェクト。
  6. 前記コレクション・オブジェクトが、HashMapまたはArrayListである、請求項5に記載の方法。
  7. コンピュータの処理により、コンピュータのメモリを管理するプログラムであって、
    前記コンピュータに、
    内部配列を含むコレクション・オブジェクトを生成するステップと、
    間欠的に前記コレクション・オブジェクトの利用率を調べるステップと、
    前記利用率が所定の利用率以下であることに応答して、前記コレクション・オブジェクトのうち、初期化が終わり更新が少なくなると予想できるコレクション・オブジェクトに対してのみ、内部配列のサイズを縮小するステップを実行させる、
    プログラム。
  8. 前記コンピュータは、プログラム言語実行環境を実装するものである、請求項7に記載のプログラム。
  9. 前記プログラム言語実行環境がJVMである、請求項8に記載のプログラム。
  10. 前記内部配列のサイズを縮小するステップは、GC時に実行される、請求項9に記載のプログラム。
  11. 前記初期化が終わり更新が少なくなると予想できるコレクション・オブジェクトであるとの判断は、以下の(a)、(b)、(c)あるいは(d)どれかに基づき行われる、請求項10に記載のプログラム。
    (a) JVMが世代別GCを用いている場合、コレクション・オブジェクトが第2世代領域に移動された場合、
    (b) Mark and sweep GCを用いている場合、compactionを2回以上生き延びたオブジェクトの場合、
    (c) get()メソッドなどによって、データの挿入・削除以外の操作が一定回数以上実行さ
    れたオブジェクトの場合、
    (d) 自動縮小対象を、まだ一度も自動縮小していないコレクション・オブジェクト。
  12. 前記コレクション・オブジェクトが、HashMapまたはArrayListである、請求項11に記載のプログラム。
  13. 請求項1乃至請求項6のうちのいずれか1つに記載された方法を実行する前記コンピュータであるコンピュータ・システム。
JP2013103042A 2013-05-15 2013-05-15 コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム Expired - Fee Related JP6173031B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013103042A JP6173031B2 (ja) 2013-05-15 2013-05-15 コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013103042A JP6173031B2 (ja) 2013-05-15 2013-05-15 コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム

Publications (2)

Publication Number Publication Date
JP2014225077A JP2014225077A (ja) 2014-12-04
JP6173031B2 true JP6173031B2 (ja) 2017-08-02

Family

ID=52123728

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013103042A Expired - Fee Related JP6173031B2 (ja) 2013-05-15 2013-05-15 コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム

Country Status (1)

Country Link
JP (1) JP6173031B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5950288B2 (ja) 2014-09-16 2016-07-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プログラミング言語の処理系を実現する装置及び方法
CN106547603B (zh) * 2015-09-23 2021-05-18 北京奇虎科技有限公司 减少golang语言系统垃圾回收时间的方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6476227A (en) * 1987-09-18 1989-03-22 Nec Corp System for adapting hash table size
JPH07334366A (ja) * 1994-06-07 1995-12-22 Fujitsu Ltd グラフリダクション機構の最適化方法および装置
US6154822A (en) * 1998-04-21 2000-11-28 International Business Machines Corporation Method and system for improving data storage and access for programs written in mid-level programming languages
US20080005403A1 (en) * 2006-06-29 2008-01-03 Nokia Corporation Overcoming compilation buffer overloads in virtual machines

Also Published As

Publication number Publication date
JP2014225077A (ja) 2014-12-04

Similar Documents

Publication Publication Date Title
KR100384905B1 (ko) 컴퓨터 메모리에서 데이터 관리 방법, 장치 및 기록매체
US8606791B2 (en) Concurrently accessed hash table
US8429633B2 (en) Managing memory to support large-scale interprocedural static analysis for security problems
US10838857B2 (en) Multi-section garbage collection
US20140068572A1 (en) Java native interface array handling in a distributed java virtual machine
US8769230B2 (en) Parallel, single-pass compaction in a region-based garbage collector
JP2015524593A (ja) ビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法
US11016886B2 (en) Multi-ring shared, traversable, and dynamic advanced database
US11256677B2 (en) Method, device, and computer program product for managing storage system
US20210089442A1 (en) Dynamically allocating memory pool subinstances
US8447793B2 (en) Efficient remembered set for region-based garbage collectors
US20200233799A1 (en) Method, apparatus, and computer program product for managing storage system
JP6173031B2 (ja) コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム
US11474832B2 (en) Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
US10120796B2 (en) Memory allocation for long-lived objects
US10922107B2 (en) Apparatus and method for realizing runtime system for programming language
JP5889270B2 (ja) スタック・スキャンのコストを削減するための方法、プログラム及びシステム
US20180293164A1 (en) Automatic persistent memory management
US11017032B1 (en) Document recovery utilizing serialized data
US9753850B1 (en) On-heap huge slab allocator
JP6103994B2 (ja) 文字列データ処理方法、プログラム及びシステム
Sutherland et al. Managing Memory for Game Developers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170601

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

R150 Certificate of patent or registration of utility model

Ref document number: 6173031

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees