JP5889270B2 - スタック・スキャンのコストを削減するための方法、プログラム及びシステム - Google Patents
スタック・スキャンのコストを削減するための方法、プログラム及びシステム Download PDFInfo
- Publication number
- JP5889270B2 JP5889270B2 JP2013257970A JP2013257970A JP5889270B2 JP 5889270 B2 JP5889270 B2 JP 5889270B2 JP 2013257970 A JP2013257970 A JP 2013257970A JP 2013257970 A JP2013257970 A JP 2013257970A JP 5889270 B2 JP5889270 B2 JP 5889270B2
- Authority
- JP
- Japan
- Prior art keywords
- stack
- scan
- address
- start pointer
- reference list
- 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
- 238000000034 method Methods 0.000 title claims description 100
- 238000012545 processing Methods 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 38
- 230000004044 response Effects 0.000 claims description 11
- 238000007781 pre-processing Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
- G06F12/0276—Generational garbage collection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/70—Details relating to dynamic memory management
- G06F2212/702—Conservative garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Executing Machine-Instructions (AREA)
Description
colorのLCDモニタである。ディスプレイ114は例えば、JVM上で実行されるアプリケーション・プログラムによる動作の結果を表示するために使用される。
1.1 スキャン不要領域開始ポインタには、該スレッドに割り当てられたスタックの底を設定する。
1.2 nurseryオブジェクト参照リストとして空のリストを生成する。
スキャン不要領域開始ポインタ及びnurseryオブジェクト参照リストを破棄する。
なし
スキャン不要領域開始ポインタが破棄されるスタックフレームを指すか否かを判定し、破棄されるスタックフレームを指すことを条件に、スキャン不要領域開始ポインタに新しいスタック・ポインタの値を設定する調整処理を行うように全てのメソッドの出口のコードを書き換える。スキャン不要領域開始ポインタが、破棄されるスタックフレームを指すか否かの判定に代えて、新しいスタック・ポインタが、スキャン不要領域開始ポインタよりも下である否かの判定を実行するようにしてもよい。そして新しいスタック・ポインタが、スキャン不要領域開始ポインタよりも下であることを条件に、スキャン不要領域開始ポインタに新しいスタック・ポインタの値を設定する調整処理を行うようにしてもよい。
5.1 例えば、スタティック変数や各種のテーブル等、スタック以外のGCルートのスキャンは従来と同様に行う。
5.2 各スレッドのnurseryオブジェクト参照リストにリストされている各アドレスについて、以下の処理を行う。
5.2.1 各スレッドのスタックのスキャンを行う前に、各アドレスについて、該アドレスが、対応するスキャン不要領域開始ポインタが指すスタックフレームよりも上のスタックフレームに含まれるか否かを判定し、上記アドレスが、対応するスキャン不要領域開始ポインタが指すスタックフレームよりも上のスタックフレームに含まれることを条件に、上記アドレスをnurseryオブジェクト参照リストから削除する。なお、削除したアドレスのスタック領域は、変更されている可能性があるため、後で通常のスキャンを行う。
5.2.2各アドレスについて、該アドレスから参照されるオブジェクト、言い換えると、該アドレスに格納される参照によりアクセスされるオブジェクト、に対してGC処理を行う。オブジェクトは、第1世代のヒープ領域の新しい領域か、又は、第2世代のヒープ領域に移されるので、移動後のオブジェクトを正しく指すように上記アドレスに格納されている参照を更新する。なお、当該処理以前にオブジェクトが移動済みの場合は、参照の更新のみ行う。
5.2.3各スレッドのスタックのスキャンの後、対応するnurseryオブジェクト参照リストに含まれる各アドレスについて、該アドレスに格納される参照によりアクセスされるオブジェクトが第2世代のヒープ領域に移動するなどによって当該アドレスから上記nurseryオブジェクトを参照する可能性がなくなることを条件に、該アドレスをnurseryオブジェクト参照リストから削除する。
5.3 各スレッドのスキャン不要領域開始ポインタが指すスタックフレームより上のスタックフレームに対して、従来と同様にスキャンしGC処理を行う。この際、nurseryオブジェクトを参照する又は参照しうる各スタック内のアドレスを全て、対応するnurseryオブジェクト参照リストに登録する。なお、nurseryオブジェクトを参照しうるスタック内のアドレスの詳細については、7.の拡張Aで後述する。
5.4 各スレッドのスキャン不要領域開始ポインタを、対応するnurseryオブジェクト参照リストにリストされたアドレスがスタックの底からスキャン不要領域開始ポインタが指すアドレスまでの領域内に含まれるように更新する。
従来通りの処理をする。
上述した実施例に対し、様々な拡張が考えられる。
Claims (13)
- 世代別ガベージ・コレクション(GC)をサポートするコンピュータ・システムの処理により、スタック・スキャンのコストを削減する方法であって、
スレッドごと、そのスタック内を指すスキャン不要領域開始ポインタを用意するステップと、
第1世代の(nursery)ヒープ領域のGCにおいて、スタックの底から前記スキャン不要領域開始ポインタが指すアドレスまでの領域が、前記第1世代のヒープ領域に存在するnurseryオブジェクトへの参照が一つも存在しない領域となるように、各スレッドの前記スキャン不要領域開始ポインタに値を設定するステップと、
次回の第1世代のヒープ領域のGCにおいて、各スレッドのスタックのスキャンを、前記スキャン不要領域開始ポインタが指すスタックフレームより上のスタックフレームに対してのみ実行するステップと
を含む、スタック・スキャンのコストを削減する方法。 - 第1世代のヒープ領域のGCにおいて、前記nurseryオブジェクトを参照する又は参照しうる各スタック内の1以上のアドレスを、スレッドごとに用意するnurseryオブジェクト参照リストに登録するステップ、及び、前記スキャン不要領域開始ポインタを、前記nurseryオブジェクト参照リストにリストされたアドレスが前記スタックの底から前記スキャン不要領域開始ポインタが指すアドレスまでの領域内に含まれるように更新するステップを更に含み、次回の第1世代のヒープ領域のGCでは、前記スタックの底から前記スキャン不要領域開始ポインタが指すアドレスまでの領域については、前記nurseryオブジェクト参照リストに含まれるアドレスに対してGC処理を行うのみとする、請求項1に記載のスタック・スキャンのコストを削減する方法。
- 少なくとも一部のスタックフレームの破棄に応答して、前記スキャン不要領域開始ポインタが破棄される前記スタックフレームを指すか否かを判定し、破棄される前記スタックフレームを指すことを条件に、前記スキャン不要領域開始ポインタに新しいスタック・ポインタの値を設定する調整処理を行うステップを更に含む、請求項2に記載のスタック・スキャンのコストを削減する方法。
- 前記スキャン不要領域開始ポインタの値の更新に応答して、更新後の前記値により指されるスタックフレームに格納されるメソッドのリターン先の情報を、前記メソッドのリターン先へ戻る前に前記調整処理が行われるように書き換えるステップを更に含む、請求項3に記載のスタック・スキャンのコストを削減する方法。
- 前記次回の第1世代のヒープ領域のGCにおいて、前処理として、前記スキャン不要領域開始ポインタを、前記調整処理のためのコードを含むメソッドに対応する最初のスタックフレームまで下げるステップを更に含む、請求項3に記載のスタック・スキャンのコストを削減する方法。
- 前記次回の第1世代のヒープ領域のGCにおいて、各スレッドのスタックのスキャンを行う前に、前記nurseryオブジェクト参照リストに含まれる各アドレスについて、前記スキャン不要領域開始ポインタが指すスタックフレームよりも上のスタックフレームに含まれるか否かを判定し、前記上のスタックフレームに含まれることを条件に、該アドレスを前記nurseryオブジェクト参照リストから削除するステップを更に含む、請求項3に記載のスタック・スキャンのコストを削減する方法。
- 前記nurseryオブジェクト参照リストにリストされるアドレスに対するGC処理は、各アドレスについて、該アドレスに格納される参照によりアクセスされるオブジェクトの移動に応答して、移動後の前記オブジェクトを正しく指すように前記アドレスに格納される参照を更新することを含む、請求項3に記載のスタック・スキャンのコストを削減する方法。
- 前記nurseryオブジェクト参照リストにリストされるアドレスに対するGC処理は、前記nurseryオブジェクト参照リストに含まれる各アドレスについて、 該アドレスから参照されるオブジェクトが第2世代の(tenured)ヒープ領域に移動することを条件に、該アドレスを前記nurseryオブジェクト参照リストから削除するステップを含む、請求項3に記載のスタック・スキャンのコストを削減する方法。
- 前記スレッドごとのスタック内に配置されたオブジェクトが存在する場合に、該オブジェクト内の参照フィールドのアドレスを、対応する前記nurseryオブジェクト参照リストに追加するステップを更に含む、請求項3に記載のスタック・スキャンのコストを削減する方法。
- 前記スキャン不要領域開始ポインタの上限を、先頭のスタックフレームから所定数のスタックフレーム分移動した位置のアドレスに設定し、設定された前記上限より上に積まれたデータのアドレスの前記nurseryオブジェクト参照リストへの登録を禁止するステップを更に含む、請求項3に記載のスタック・スキャンのコストを削減する方法。
- ガベージ・コレクション(GC)をサポートするコンピュータ・システムの処理により、スタック・スキャンのコストを削減する方法であって、
スレッドごと、その実行スタック内を指すスキャン不要領域開始ポインタと、オブジェクトを参照する又は参照しうるスタック内の1以上のアドレスを登録するオブジェクト参照リストとを用意するステップと、
GCにおいて、オブジェクトを参照する又は参照しうるスタック内の1以上のアドレスを前記オブジェクト参照リストに登録し、かつ、前記スキャン不要領域開始ポインタを、スタックの底から前記スキャン不要領域開始ポインタが指すアドレスまでの領域内に前記オブジェクト参照リストにリストされたアドレスが含まれるように設定するステップと、
次回以降のGCにおいて、前記スタックの底から前記スキャン不要領域開始ポインタが指すアドレスまでの領域については、前記オブジェクト参照リストに含まれるアドレスに対してGC処理を行うのみとする、スタック・スキャンのコストを削減する方法。 - コンピュータに、請求項1乃至11のいずれか1項に記載のスタック・スキャンのコストを削減する方法の各ステップを実行させるためのスタック・スキャンのコストを削減するためのプログラム。
- 請求項1乃至11のいずれか1項に記載のスタック・スキャンのコストを削減す方法の各ステップを実行するように適合された手段を備える、スタック・スキャンのコストを削減するためのコンピュータ・システム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013257970A JP5889270B2 (ja) | 2013-12-13 | 2013-12-13 | スタック・スキャンのコストを削減するための方法、プログラム及びシステム |
US14/567,526 US11314640B2 (en) | 2013-12-13 | 2014-12-11 | Method, program, and system for reducing the cost of stack scanning |
US14/743,285 US10423526B2 (en) | 2013-12-13 | 2015-06-18 | Method, program, and system for reducing the cost of stack scanning |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013257970A JP5889270B2 (ja) | 2013-12-13 | 2013-12-13 | スタック・スキャンのコストを削減するための方法、プログラム及びシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015114957A JP2015114957A (ja) | 2015-06-22 |
JP5889270B2 true JP5889270B2 (ja) | 2016-03-22 |
Family
ID=53368596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013257970A Expired - Fee Related JP5889270B2 (ja) | 2013-12-13 | 2013-12-13 | スタック・スキャンのコストを削減するための方法、プログラム及びシステム |
Country Status (2)
Country | Link |
---|---|
US (2) | US11314640B2 (ja) |
JP (1) | JP5889270B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10459656B1 (en) * | 2018-06-25 | 2019-10-29 | International Business Machines Corporation | Method and apparatus to represent activation frame for pause-less garbage collection |
US11416392B2 (en) * | 2019-06-20 | 2022-08-16 | Microsoft Technology Licensing, Llc | Arena-based memory management |
US11068393B2 (en) * | 2019-10-17 | 2021-07-20 | Microsoft Technology Licensing, Llc | Enhanced concurrency garbage collection stack scanning |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3795669B2 (ja) | 1998-04-28 | 2006-07-12 | 富士通株式会社 | メモリ管理装置およびメモリ管理プログラムを記憶した記憶媒体 |
US6763440B1 (en) * | 2000-06-02 | 2004-07-13 | Sun Microsystems, Inc. | Garbage collection using nursery regions for new objects in a virtual heap |
US6865657B1 (en) * | 2000-06-02 | 2005-03-08 | Sun Microsystems, Inc. | Garbage collector for a virtual heap |
US6912554B2 (en) * | 2001-11-14 | 2005-06-28 | Omron Corporation | Method and apparatus for garbage collection using advanced marking techniques and restricted barrier to protect the data |
JP2004078750A (ja) | 2002-08-21 | 2004-03-11 | Nippon Telegr & Teleph Corp <Ntt> | オブジェクト管理装置および方法とプログラム |
JP2004246753A (ja) | 2003-02-17 | 2004-09-02 | Nippon Telegr & Teleph Corp <Ntt> | メモリ管理装置およびプログラム |
GB2399897B (en) | 2003-03-26 | 2006-02-01 | Advanced Risc Mach Ltd | Memory recycling in computer systems |
US7730016B2 (en) * | 2005-01-31 | 2010-06-01 | Oracle International Corporation | Identification of false ambiguous roots in a stack conservative garbage collector |
US20070100919A1 (en) * | 2005-11-01 | 2007-05-03 | Electronics And Telecommunications Research Institute | Garbage collection unit and method thereof |
US8024505B2 (en) * | 2006-05-11 | 2011-09-20 | Oracle International Corporation | System and method for optimistic creation of thread local objects in a virtual machine environment |
US8868623B2 (en) * | 2007-10-30 | 2014-10-21 | International Business Machines Corporation | Enhanced garbage collection in a multi-node environment |
US20090119352A1 (en) * | 2007-11-05 | 2009-05-07 | Steven Joseph Branda | Method for Optimizing Generational Garbage Collection Through Object Life Heuristics |
JP2010015223A (ja) * | 2008-07-01 | 2010-01-21 | Internatl Business Mach Corp <Ibm> | メモリ領域中のオブジェクトを隔離するための方法 |
US8825719B2 (en) * | 2008-10-30 | 2014-09-02 | Microsoft Corporation | Incremental lock-free stack scanning for garbage collection |
JP5380695B2 (ja) * | 2010-02-23 | 2014-01-08 | 株式会社日立製作所 | メモリ管理方法、計算機システム及びメモリ管理プログラム |
JP5509164B2 (ja) * | 2011-08-18 | 2014-06-04 | 株式会社日立製作所 | 計算機、管理方法及びプログラム |
JP5719278B2 (ja) | 2011-11-11 | 2015-05-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報処理装置、プロファイル対象決定プログラム及び方法 |
US8694562B2 (en) * | 2012-05-22 | 2014-04-08 | Microsoft Corporation | Generational garbage collection for a pool-based heap |
US9292359B2 (en) * | 2012-07-27 | 2016-03-22 | Intel Corporation | System and method for memory management |
-
2013
- 2013-12-13 JP JP2013257970A patent/JP5889270B2/ja not_active Expired - Fee Related
-
2014
- 2014-12-11 US US14/567,526 patent/US11314640B2/en active Active
-
2015
- 2015-06-18 US US14/743,285 patent/US10423526B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US10423526B2 (en) | 2019-09-24 |
US20150286566A1 (en) | 2015-10-08 |
JP2015114957A (ja) | 2015-06-22 |
US20150169444A1 (en) | 2015-06-18 |
US11314640B2 (en) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9870317B2 (en) | Incremental class unloading in a region-based garbage collector | |
US8024505B2 (en) | System and method for optimistic creation of thread local objects in a virtual machine environment | |
JP4917138B2 (ja) | オブジェクト最適配置装置、オブジェクト最適配置方法、及びオブジェクト最適配置プログラム | |
CN110325969B (zh) | 多阶段垃圾收集器 | |
US9740716B2 (en) | System and method for dynamically selecting a garbage collection algorithm based on the contents of heap regions | |
US8769230B2 (en) | Parallel, single-pass compaction in a region-based garbage collector | |
US20100011357A1 (en) | System and method for garbage collection in a virtual machine | |
US7627621B2 (en) | Method and system for minor garbage collection | |
CN110291508B (zh) | 垃圾收集器 | |
US20160328319A1 (en) | Managing memory in a computer system | |
JP5889270B2 (ja) | スタック・スキャンのコストを削減するための方法、プログラム及びシステム | |
US8447793B2 (en) | Efficient remembered set for region-based garbage collectors | |
JP5588072B2 (ja) | メモリ割り当て方法、プログラム、及びシステム | |
US8838874B2 (en) | Method, program, and system for processing object in computer | |
US7756912B2 (en) | Method and system for minor garbage collection in a multitasking environment | |
US7404061B2 (en) | Permanent pool memory management method and system | |
US10922107B2 (en) | Apparatus and method for realizing runtime system for programming language | |
JP2011100230A (ja) | メモリ管理機能を有するプログラム及び装置 | |
JP6173031B2 (ja) | コンピュータにおいてオブジェクトを管理するための方法、プログラム及びシステム | |
US20120131069A1 (en) | Object consolidation to a grid of a virtual machine | |
JP6223002B2 (ja) | コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151127 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20160104 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20160119 |
|
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: 20160126 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160216 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5889270 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |