JP4345748B2 - メモリ割当装置、メモリ割当方法、およびプログラム記録媒体 - Google Patents
メモリ割当装置、メモリ割当方法、およびプログラム記録媒体 Download PDFInfo
- Publication number
- JP4345748B2 JP4345748B2 JP2006021497A JP2006021497A JP4345748B2 JP 4345748 B2 JP4345748 B2 JP 4345748B2 JP 2006021497 A JP2006021497 A JP 2006021497A JP 2006021497 A JP2006021497 A JP 2006021497A JP 4345748 B2 JP4345748 B2 JP 4345748B2
- Authority
- JP
- Japan
- Prior art keywords
- size
- area
- distribution
- memory
- heap 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
Links
Images
Description
参1:情報技術用語事典(オーム社刊)
参2:情報処理用語大事典(オーム社刊)
参3:先端ソフトウエア用語事典(オーム社刊)
参A:SUPER ASCII Glossary Help on Internet
処理や過程を意味する一般用語(参2)
(2) スレッド(thread):
プロセスまたはタスクと呼ばれる1つの実行環境の中で並列実行可能な処理を複数に分割した場合に、プロセッサのスケジュール対象となる実行単位または制御フローのこと。(参3)
(3) コンテキスト(context) :
(オブジェクト指向システムに関連して)メソッドを実行するために必要な情報を蓄えるオブジェクトをいう。コンテキストは、呼び出し先のコンテキスト、プログラムの入ったメソッドオブジェクト、プログラムカウンタ、スタックポインタという情報、引数や一時変数を取るところ、および評価スタックから成立する。このような実行環境をオブジェクトとしてとるが、プロセスなどをサポートする高級言語の特徴でヒープ言語と呼ばれる。他方PASCALやALGOL60では実行環境はスタックにとられFORTRANでは固定領域にとられる。(参1)
(4) タスク(task):
多重プログラミング又は多重プロセッシングの環境において、計算機によって実行されるべき仕事の要素として制御プログラムによって取り扱われる命令の1つ以上の列(JIS)
(5) ガベージ(garbage) :
どこからも参照されていないが、生成されてしまったオブジェクト。ガベージはガベージコレクタで回収する。(参1)
(6) ガベージコレクション(Garbage Collection):
(オブジェクト指向システムに関連して)メモリ管理の中心となるプログラムを言う。主記憶を使いきるとメインの計算を止め、ガベージコレクタを動かして、もはや使われていないオブジェクトを全部集める方法である。この方法でガベージコレクタが働くと、計算が止まってしまうため入出力が全く反応しなくなり、実時間の応答が必要な用途には使えない。(参1)
(7) インタプリタ(interpreter) :
解釈実行を行う翻訳プログラム(JIS)
(8) リアルタイム(real time) :
計算機外部の他の処理との関係をもちながら、かつ外部の処理によって定められる時間要件に従って、計算機の行うデータの処理に関する用語。実時間。(JIS)
(9) オブジェクト(object):
プロシジュア(定義した手続き)とデータの特性を結合させるエンティティ(実体)であり、これにより計算が行われ、局部的状態が蓄えられる。(参1)
(10) クラス(class) :
同一の手続き群とデータ構造を持つオブジェクトの集合。(参3)
(11) ヒープ領域(heap area) :
プログラム実行時に必要に応じて使用されるような作業領域。(参2)
(12) スケジュールする(scheduling):
ディスパッチされるべきジョブ又はタスクを選択すること。(JIS)
(13) イベント(event) :
ハードウエア/ソフトウエアが、自分自身の状態の変化を他のハードウエア/ソフトウエアに通知すること。一般にこの際の通知では、イベントの種類やハードウエア/ソフトウエアの状態を表す各種パラメータをメッセージとしてまとめ、相手に送信する。そしてイベントの通知を受けた側では、メッセージのパラメータなどから適切な処理を行う。(参A)
(14) イベントフラグ(event flag):
タスクが1つまたは複数の事象の発生を待ち合わせるための機能とその事象を通知する機能とからなるタスク間同期通信機構。(参3)
(15) セマフォ(semaphore) :
複数のプロセスやタスクを並列に処理するシステムで、各プロセス間,タスク間の同期やメッセージ制御、割込処理を行うための仕組み。(参3)
(16) 仮想マシーン(仮想機械)(virtual mathine) :
複数の特定のプラットホーム(OSやハードウエア)に組み込まれた、特定のプラットホームに依存しないアプリケーションプログラムを実行する環境。同じ仮想マシンさえ提供されていれば、プラットホームが変わっても同じアプリケーションプログラムが実行できる。
オペレーティングシステムに組み込まれた、Javaアプリケーションプログラム(JavaはSun Microsystems社の商標)を実行するための環境。一般的なプログラムは、ソースコードをコンパイルして、それぞれのオペレーティングシステムに最適化した実行コードを生成する、というスタイルを採る。Java(JavaはSun Microsystems社の商標)で書かれたプログラムも同様の手順で作成するが、コンパイル後のコードは、特定のオペレーティングシステムに依存しない中間コードの形をとる。これをロードし、各オペレーティングシステムに合わせたコードに変換しながら実行するのがJava仮想マシン(JavaはSun Microsystems社の商標)の役目であり、同じ仮想マシンさえ提供されていれば、プラットホームが変わっても同じコードが実行できるようになっている。
ヒープ領域上の使用可能な領域、未使用領域。
リアルタイム性が要求されない処理を行うスレッド。
オブジェクトがどこからも参照されないか否かを調べるために存在するオブジェクトに1対1に対応する表。或るオブジェクトに参照があることが確かめられた場合、そのオブジェクトに対応する表の欄にマークを付ける。全ての参照関係を調べたときマークの無いオブジェクトは不要であるので取り除くことができる。
オブジェクトが生成され、消去されるまでの時間。
オブジェクトへの参照関係の変更をチェックし、書き替えが起こった場合に何らかの処理をすること。本件の場合は、書き替えが起きたとき、書き替える参照が指しているオブジェクトに対応するマークテーブルの欄にマークを付ける。
ヒープ領域上の不要なオブジェクトを取り除く処理。
新しいオブジェクトを生成すること。具体的には、ヒープ領域の一部をオブジェクトに割り当て、内容を初期化すること。
不要なオブジェクトを取り除くこと。具体的には、ヒープ領域に確保してある領域を解放すること。
或るオブジェクトAが別の特定のオブジェクトBにアクセスするためにオブジェクトBを特定する情報。具体的には、オブジェクトBを指すポインタまたはインデックス。
参照を現在のオブジェクトBから別のオブジェクトCに変更すること。
この論文はBaker が書いたという1978年のリアルタイムGCに対して、全体の処理時間から必要なGCの処理時間の割合を求めるものである。
GCを行う領域を細かく分けることにより、個々の処理時間を短くしてリアルタイム性を向上する方法であり、全ての領域を対象にするものではない。また、スケジューリングについては述べられていない。
Baker の考えを発展させ、ネットワークの分散環境に適応したもの。ネットワーク固有の問題を解決しようとするものである。
システムコール発行時に、そのシステムコールにより起動されるタスクの優先度を制御するものである。
オブジェクトのサイズを検出し、そのサイズに応じてワークエリアをメモリに確保することが一応示されている。
マルチメディアオペレーティングシステムのコンセプトが示されている。
スタック上のオブジェクトの一番上にオブジェクトの大きさを書いておくことが示されている。
オブジェクト間の参照ツリーの考え方が示されている。
オブジェクトの寿命に関連してメモリ割当を行うことが示されている。
アプリケーションプログラムインタフェースの呼出に応じてGCを制御することと、オブジェクト参照に関する技術思想が示されている。
前記特性検知手段により検知した各オブジェクトのサイズに基づいて、オブジェクトのサイズの発生頻度の分布を取得する分布取得手段と、
前記分布取得手段によって得られたオブジェクトのサイズの発生頻度の分布の中心より、大きいサイズを固定サイズとする固定サイズ決定手段と、
新たなオブジェクトを前記ヒープ領域内に生成するとき、このオブジェクトに対する割り当てサイズを、このオブジェクトのサイズよりも大きく、且つ前記固定サイズ決定手段により決定された固定サイズの整数倍の大きさに決定し、前記ヒープ領域に対する当該オブジェクトの割り当てを行う割当手段と、を設けている。
一般に、オブジェクト指向のシステムにおいては、プログラムの実行時に生成されるオブジェクトの大きさ(メモリ上のサイズ)の発生頻度分布は正規分布を示す。一方、新たなオブジェクトを生成する際、メモリ上のフリー領域から割り当て可能な領域を抽出するが、上述のようにオブジェクトのサイズの分布中心より、大きなサイズを新たなオブジェクトの割り当てサイズとしておくことによって、その割り当てられたオブジェクトが消去された後、新たなオブジェクトが割り当てられるとき、上記割り当てサイズより小さなオブジェクトであれば再利用できる。上記割り当てサイズは正規分布の分布中心より大きなサイズであるため、多くのオブジェクトが先に使用されていたメモリ領域を再利用できることになる。また、このことにより、コンパクションを行わなくてもメモリの使用効率が向上することになる。また、コンパクションのためのCPUパワーが不要となり、小規模のCPUで応答性の高いシステムを構成することができる。
前記割当手段は、新たなオブジェクトを前記ヒープ領域内に生成するとき、当該オブジェクトのサイズより大きく且つ最も小さなサイズの領域を割り当てる手段である。
前記割当手段は、前記寿命検知手段により検知されたオブジェクトの寿命に基づいて、このオブジェクトに割り当てる、前記ヒープ領域に対するオブジェクトの生成領域を決定する手段である。
このことによって、GCの優先度が動的に自動調整される。
集合No.n バイトk 個数m
1 64 5000
2 256 10000
3 1k 10000
4 4k 5000
5 32k 500
とする。
図47は上記「参照変更のマーク付与」の処理手順を示すフローチャートである。先ず、参照変更されたオブジェクトからマークテーブル上の位置を計算し、該当のマークがWhite であるか否かを判定する(s191→s192)。このWhite マークは上述したように未だマークされていない状態を意味する。もし、White マークでなければ、すでにマークされているので、そのまま処理を終了する。White マークであれば、それをGrayにマークする(s193)。上述したようにこのGrayマークは参照変更のあったオブジェクトであることを意味する。続いてマークスタックに参照先のオブジェクトを示すデータを積む(s194)。
Claims (10)
- メモリのヒープ領域内に生成されたオブジェクトの特性として、そのオブジェクトのサイズを検知する特性検知手段と、
前記特性検知手段により検知した各オブジェクトのサイズに基づいて、オブジェクトのサイズの発生頻度の分布を取得する分布取得手段と、
前記分布取得手段によって得られたオブジェクトのサイズの発生頻度の分布の中心より、大きいサイズを固定サイズとする固定サイズ決定手段と、
新たなオブジェクトを前記ヒープ領域内に生成するとき、このオブジェクトに対する割り当てサイズを、このオブジェクトのサイズよりも大きく、且つ前記固定サイズ決定手段により決定された固定サイズの整数倍の大きさに決定し、前記ヒープ領域に対する当該オブジェクトの割り当てを行う割当手段と、を設けたことを特徴とするメモリ割当装置。 - 予め定められたタイミングで、前記特性検知手段によるヒープ領域内に生成したオブジェクトのサイズの検知、および前記分布取得手段によるオブジェクトのサイズの発生頻度の分布の取得を実行し、その後、前記固定サイズ決定手段により固定サイズを更新する固定サイズ更新手段を設けたことを特徴とする、請求項1に記載のメモリ割当装置。
- 前記特性検知手段、および前記分布取得手段は、オブジェクトのサイズの発生頻度の分布の取得を実行しないとき、システムから切り離されるプログラムモジュールによるものである請求項1、または2に記載のメモリ割当装置。
- 前記固定サイズ決定手段は、固定サイズの更新を実行しないとき、システムから切り離されるプログラムモジュールによるものである請求項1〜3のいずれかに記載のメモリ割当装置。
- 前記ヒープ領域内を予め複数のサイズに分割し、且つ各サイズを前記固定サイズの整数倍の大きさとするヒープ領域分割手段を設け、
前記割当手段は、新たなオブジェクトを前記ヒープ領域内に生成するとき、当該オブジェクトのサイズより大きく且つ最も小さなサイズの領域を割り当てる手段である、請求項1〜4のいずれかに記載のメモリ割当装置。 - 前記ヒープ領域分割手段は、前記複数のサイズの分割数と各サイズを引数とするアプリケーションプログラムインタフェースの呼び出しによって、前記ヒープ領域を分割する手段である請求項5に記載のメモリ割当装置。
- アプリケーションプログラムインタフェースの呼び出しによって前記固定サイズを設定する手段を設けたことを特徴とする請求項1〜6のいずれかに記載のメモリ割当装置。
- クラスからオブジェクトが生成された時刻に相当するデータを記憶し、前記オブジェクトを削除する際に、当該オブジェクトの寿命を検出し、該寿命のデータをクラスに設け、クラスから生成されたオブジェクトの寿命を検知する寿命検知手段と、
前記割当手段は、前記寿命検知手段により検知されたオブジェクトの寿命に基づいて、このオブジェクトに割り当てる、前記ヒープ領域に対するオブジェクトの生成領域を決定する手段である請求項1〜7のいずれかに記載のメモリ割当装置。 - メモリのヒープ領域内に生成されたオブジェクトの特性として、そのオブジェクトのサイズを検知する第1のステップと、
前記特性検知手段により検知した各オブジェクトのサイズに基づいて、オブジェクトのサイズの発生頻度の分布を取得する第2のステップと、
前記分布取得手段によって得られたオブジェクトのサイズの発生頻度の分布の中心より、大きいサイズを固定サイズとする第3のステップと、
新たなオブジェクトを前記ヒープ領域内に生成するとき、このオブジェクトに対する割り当てサイズを、このオブジェクトのサイズよりも大きく、且つ前記固定サイズ決定手段により決定された固定サイズの整数倍の大きさに決定し、前記ヒープ領域に対する当該オブジェクトの割り当てを行う第4のステップと、をコンピュータに実行させるメモリ割当方法。 - メモリのヒープ領域内に生成されたオブジェクトの特性として、そのオブジェクトのサイズを検知する第1のステップと、
前記特性検知手段により検知した各オブジェクトのサイズに基づいて、オブジェクトのサイズの発生頻度の分布を取得する第2のステップと、
前記分布取得手段によって得られたオブジェクトのサイズの発生頻度の分布の中心より、大きいサイズを固定サイズとする第3のステップと、
新たなオブジェクトを前記ヒープ領域内に生成するとき、このオブジェクトに対する割り当てサイズを、このオブジェクトのサイズよりも大きく、且つ前記固定サイズ決定手段により決定された固定サイズの整数倍の大きさに決定し、前記ヒープ領域に対する当該オブジェクトの割り当てを行う第4のステップと、をコンピュータに実行させる処理プログラムを記録したコンピュータ読取可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006021497A JP4345748B2 (ja) | 1997-11-21 | 2006-01-30 | メモリ割当装置、メモリ割当方法、およびプログラム記録媒体 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32176697 | 1997-11-21 | ||
JP2006021497A JP4345748B2 (ja) | 1997-11-21 | 2006-01-30 | メモリ割当装置、メモリ割当方法、およびプログラム記録媒体 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP20034599A Division JP3826626B2 (ja) | 1997-11-21 | 1999-07-14 | プログラム制御装置、プログラム制御方法、およびプログラム記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006185456A JP2006185456A (ja) | 2006-07-13 |
JP4345748B2 true JP4345748B2 (ja) | 2009-10-14 |
Family
ID=36738480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006021497A Expired - Fee Related JP4345748B2 (ja) | 1997-11-21 | 2006-01-30 | メモリ割当装置、メモリ割当方法、およびプログラム記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4345748B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101678427B (zh) * | 2007-04-25 | 2011-11-30 | 东洋制罐株式会社 | 拉深/挤压罐成型装置用脱模装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4751814B2 (ja) * | 2006-11-28 | 2011-08-17 | 富士通東芝モバイルコミュニケーションズ株式会社 | 携帯端末 |
JP4885070B2 (ja) * | 2007-06-19 | 2012-02-29 | ヤフー株式会社 | チャットボットシステム |
JP2010211644A (ja) * | 2009-03-11 | 2010-09-24 | Nec Corp | メモリ消費電力削減システム、方法及びプログラム |
-
2006
- 2006-01-30 JP JP2006021497A patent/JP4345748B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101678427B (zh) * | 2007-04-25 | 2011-11-30 | 东洋制罐株式会社 | 拉深/挤压罐成型装置用脱模装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2006185456A (ja) | 2006-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3027845B2 (ja) | プログラム制御装置および方法 | |
JP4265610B2 (ja) | プログラム制御装置、プログラム制御方法、およびプログラム記録媒体 | |
US7167881B2 (en) | Method for heap memory management and computer system using the same method | |
US7454447B1 (en) | Declarative pinning | |
JP4511653B2 (ja) | マルチスレッド仮想マシン内におけるメモリ・アロケーションの方法及び装置 | |
US6192517B1 (en) | Method, apparatus, and product for improved garbage collection in a memory system through the removal of reference conflicts | |
US7225439B2 (en) | Combining write-barriers within an inner loop with fixed step | |
US6842759B2 (en) | Single-instance class objects across multiple JVM processes in a real-time system | |
JP4333676B2 (ja) | プログラム制御装置、プログラム制御方法、およびプログラム記録媒体 | |
US7412580B1 (en) | Concurrent incremental garbage collector with a card table summarizing modified reference locations | |
EP1659496B1 (en) | Garbage collection system | |
EP3577565B1 (en) | Garbage collector | |
WO2018144286A1 (en) | Multiple stage garbage collector | |
US7620943B1 (en) | Using class properties to segregate objects in a generation managed by the train algorithm | |
US20040186863A1 (en) | Elision of write barriers for stores whose values are in close proximity | |
JP3826626B2 (ja) | プログラム制御装置、プログラム制御方法、およびプログラム記録媒体 | |
JP4345748B2 (ja) | メモリ割当装置、メモリ割当方法、およびプログラム記録媒体 | |
JP2004503869A (ja) | モジュール式ガーベッジコレクタを実現するための方法および装置 | |
US7058781B2 (en) | Parallel card table scanning and updating | |
US7096329B2 (en) | Better placement of objects promoted into a generation managed by the train algorithm | |
CN114051610A (zh) | 基于arena的存储器管理 | |
CN112313631A (zh) | 闭环垃圾收集器 | |
EP3807771A1 (en) | Arena-based memory management | |
US7024437B2 (en) | Better placement of objects reachable from special objects during collection based on the train algorithm | |
US20040172428A1 (en) | Numbering sequences of cars with the same number in a generation managed by the train algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090127 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090330 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20090330 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090511 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090601 |
|
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: 20090623 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090706 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120724 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130724 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |