JP4959781B2 - オブジェクト生成地点記録方法およびプログラム - Google Patents
オブジェクト生成地点記録方法およびプログラム Download PDFInfo
- Publication number
- JP4959781B2 JP4959781B2 JP2009289944A JP2009289944A JP4959781B2 JP 4959781 B2 JP4959781 B2 JP 4959781B2 JP 2009289944 A JP2009289944 A JP 2009289944A JP 2009289944 A JP2009289944 A JP 2009289944A JP 4959781 B2 JP4959781 B2 JP 4959781B2
- Authority
- JP
- Japan
- Prior art keywords
- generation point
- class
- pointer
- information
- generation
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Description
・GC の時に生成地点ごとに生存オブジェクト数を集計し、増加し続ける場合はその生成地点がメモリリークを引き起こしているのではないかという警告を出す。
・世代別 GC を用いる場合に、長生き領域に移されたオブジェクトの割合を生成地点ごとに集計し、割合が高い場合はその生成地点で生成されるオブジェクトは最初から長生き領域に生成する。
などが考えられる。生成地点ディスクリプタを拡張すると、上で述べた「もともと存在する領域」をそのまま使用することが困難になる場合もあるが、生成地点はオブジェクト数に比べれば圧倒的に少ないので、追加メモリオーバヘッドが低いという本発明の特長は保たれる。
本発明では、オブジェクトヘッダから生成地点ディスクリプタを指すことにより、生成地点の分別と生成地点ごとの情報収集を可能にする。しかし、これによりクラス情報へのアクセスに一回分メモリ参照が余計に必要になる。図7に、このメモリ参照のコストを低減するための拡張を図示する。クラス内の情報のうち、頻繁に参照され、かつほとんど変更されないものを、生成地点ディスクリプタ710、720、730にコピーする。図7では dataA、dataB と記載している部分がこのコピーに当たる。これによりアクセスを高速化している。頻繁に参照され、かつほとんど変更されない情報の例としては、仮想関数テーブルやオブジェクトサイズなどがある。
さらに、クラスごとの最初の生成地点ディスクリプタとしてクラス構造自体を用いることで、拡張1のメモリオーバヘッドの削減を行うことができる。図8に、クラス構造自体を1つ目の生成地点ディスクリプタとして使用する拡張例を示す。図8では図7における生成地点ディスクリプタ710、730がクラス構造自体に入っているので、拡張1の方法と比べて、dataA、dataB の複製が少なくなっていることがわかる。
本発明の生成地点ディスクリプタは、生成するオブジェクトのクラスが同じであれば複数の生成地点で共有することもできる。収集したい情報の粒度がクラスごと、パッケージごとでよい場合はこのようにまとめることで情報収集のための領域を節約することができる。すなわちオブジェクトに関する収集したい情報の粒度に応じて、複数の生成地点で生成地点ディスクリプタを共用する。
図10に本発明の実施態様における、コンピュータ・ハードウェアのブロック図を一例として示す。本発明の実施形態に係るコンピュータ・システム(1001)は、CPU(1002)とメイン・メモリ(1003)と含み、これらはバス(1004)に接続されている。CPU(1002)は好ましくは、32ビット又は64ビットのアーキテクチャに基づくものであり、例えば、インテル社のXeon(商標)シリーズ、Core(商標)シリーズ、Atom(商標)シリーズ、Pentium(商標)シリーズ、Celeron(商標)シリーズ、AMD社のPhenom(商標)シリーズ、Athlon(商標)シリーズ、Turion(商標)シリーズ及びSempron(商標)などを使用することができる。
510 セルフポインタ
Claims (11)
- コンピュータの処理により、オブジェクト指向言語実行環境におけるオブジェクトの生成地点をメモリに記録する方法であって、オブジェクト指向言語の処理系が、
前記オブジェクト指向言語実行環境においてオブジェクトの生成が行われた場合、メモリに記録される前記オブジェクト構造中に、クラスを指すポインタの代わりに、当該オブジェクトの生成地点の情報と当該オブジェクトのクラスへのポインタを有する生成地点ディスクリプタを指すポインタを記録するステップと、
前記オブジェクトの前記クラスへのアクセスが生じた場合、前記生成地点ディスクリプタの前記クラスへのポインタを参照してアクセスするステップ
を有する、オブジェクトの生成地点記録方法。 - 前記記録するステップが、前記オブジェクトの生成地点が同一のオブジェクトには、同一の生成地点ディスクリプタを使用するステップを有する、請求項1記載の方法。
- 前記生成地点ディスクリプタとして、前記オブジェクトの生成時点で存在している、オブジェクトのクラスへのポインタを記録したメモリ領域を使用する、請求項1記載の方法。
- 前記オブジェクトのクラスへのポインタを記録した前記メモリ領域が存在しない場合は、前記クラスのクラス自身を指すポインタであるセルフポインタを、前記生成地点ディスクリプタとして使用する、請求項3記載の方法。
- さらに、前記生成地点ディスクリプタに拡張領域を設け、オブジェクトの生成地点ごとのオブジェクトの統計情報を収集するステップと、
前記統計情報を用いて、アプリケーション実行中のオブジェクト配置最適化を行うステップ
を有する請求項1記載の方法。 - 前記統計情報が、前記生成地点で生成されたオブジェクトの数、またはオブジェクトの種類である、請求項5記載の方法。
- さらに、前記拡張領域にクラス内の情報のうち頻繁に参照され、かつ変更されない情報をコピーするステップを有する請求項5記載の方法。
- 前記生成地点ディスクリプタとして、オブジェクトのクラス情報を記録したクラス構造自体を使用する、請求項1記載の方法。
- さらに、オブジェクトに関して収集する情報の粒度に応じて、複数の生成地点で同一の生成地点ディスクリプタを共用するステップを有する、請求項1記載の方法。
- さらに、オブジェクトに関して収集する情報の粒度に応じて、同一の生成地点を有していても異なる生成地点ディスクリプタを使用するステップを有する、請求項1記載の方法。
- 請求項1〜9の何れか1つに記載された方法の各ステップを、コンピュータに実行させる、コンピュータ・プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009289944A JP4959781B2 (ja) | 2009-12-22 | 2009-12-22 | オブジェクト生成地点記録方法およびプログラム |
US12/963,734 US8495647B2 (en) | 2009-12-22 | 2010-12-09 | Method and program for recording object allocation site |
US13/940,570 US9021496B2 (en) | 2009-12-22 | 2013-07-12 | Method and program for recording object allocation site |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009289944A JP4959781B2 (ja) | 2009-12-22 | 2009-12-22 | オブジェクト生成地点記録方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011133919A JP2011133919A (ja) | 2011-07-07 |
JP4959781B2 true JP4959781B2 (ja) | 2012-06-27 |
Family
ID=44153026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009289944A Expired - Fee Related JP4959781B2 (ja) | 2009-12-22 | 2009-12-22 | オブジェクト生成地点記録方法およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (2) | US8495647B2 (ja) |
JP (1) | JP4959781B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4959781B2 (ja) * | 2009-12-22 | 2012-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクト生成地点記録方法およびプログラム |
US20150242312A1 (en) * | 2013-04-19 | 2015-08-27 | Hitachi, Ltd. | Method of managing memory, computer, and recording medium |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5632034A (en) * | 1993-06-01 | 1997-05-20 | International Business Machines Corporation | Controlling method invocation sequence through virtual functions in an object-oriented class library |
CA2097540C (en) * | 1993-06-01 | 1998-05-12 | William G. O'farrell | Accessing remote data objects in a distributed memory environment |
US5692183A (en) * | 1995-03-31 | 1997-11-25 | Sun Microsystems, Inc. | Methods and apparatus for providing transparent persistence in a distributed object operating environment |
US6128771A (en) * | 1996-02-09 | 2000-10-03 | Sun Microsystems, Inc. | System and method for automatically modifying database access methods to insert database object handling instructions |
US5794256A (en) * | 1996-12-12 | 1998-08-11 | Microsoft Corporation | Pointer swizzling facility using three-state references to manage access to referenced objects |
US6085035A (en) * | 1997-09-09 | 2000-07-04 | Sun Microsystems, Inc. | Method and apparatus for efficient operations on primary type values without static overloading |
JP2000047879A (ja) * | 1998-07-06 | 2000-02-18 | Internatl Business Mach Corp <Ibm> | コンパイル方法及び装置、実行方法、及びプログラム実行装置 |
US7039919B1 (en) * | 1998-10-02 | 2006-05-02 | Microsoft Corporation | Tools and techniques for instrumenting interfaces of units of a software program |
US6499137B1 (en) * | 1998-10-02 | 2002-12-24 | Microsoft Corporation | Reversible load-time dynamic linking |
US6263491B1 (en) * | 1998-10-02 | 2001-07-17 | Microsoft Corporation | Heavyweight and lightweight instrumentation |
US6230312B1 (en) * | 1998-10-02 | 2001-05-08 | Microsoft Corporation | Automatic detection of per-unit location constraints |
JP3896238B2 (ja) * | 2000-03-16 | 2007-03-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータシステム及びプログラムの実行時表現方法 |
US6826583B1 (en) * | 2000-05-15 | 2004-11-30 | Sun Microsystems, Inc. | Local allocation buffers for parallel garbage collection |
US6742178B1 (en) * | 2000-07-20 | 2004-05-25 | International Business Machines Corporation | System and method for instrumenting application class files with correlation information to the instrumentation |
JP2003140899A (ja) * | 2001-11-07 | 2003-05-16 | Nec Corp | コンピュータ装置及び動的dll使用時のクラスオブジェクト管理方法並びにdllを動的に用いるプログラム |
JP4116877B2 (ja) * | 2002-12-26 | 2008-07-09 | 富士通株式会社 | ヒープサイズ自動最適化処理方法,ヒープサイズ自動最適化装置およびそのプログラム |
US7058785B1 (en) * | 2003-05-23 | 2006-06-06 | Xilinx, Inc. | Addressing objects in a large persistent storage address space |
JP4768984B2 (ja) * | 2004-12-06 | 2011-09-07 | パナソニック株式会社 | コンパイル方法、コンパイルプログラムおよびコンパイル装置 |
US8161464B2 (en) * | 2006-04-11 | 2012-04-17 | International Business Machines Corporation | Compiling source code |
US8015556B2 (en) * | 2006-10-12 | 2011-09-06 | International Business Machines Corporation | Efficient method of data reshaping for multidimensional dynamic array objects in the presence of multiple object instantiations |
JP5044816B2 (ja) * | 2007-09-06 | 2012-10-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクトを記憶・管理するシステム |
JP4852621B2 (ja) * | 2009-03-03 | 2012-01-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム中のオブジェクトの割り付け場所を追跡する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム |
JP4959781B2 (ja) * | 2009-12-22 | 2012-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクト生成地点記録方法およびプログラム |
-
2009
- 2009-12-22 JP JP2009289944A patent/JP4959781B2/ja not_active Expired - Fee Related
-
2010
- 2010-12-09 US US12/963,734 patent/US8495647B2/en not_active Expired - Fee Related
-
2013
- 2013-07-12 US US13/940,570 patent/US9021496B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20130305220A1 (en) | 2013-11-14 |
US8495647B2 (en) | 2013-07-23 |
JP2011133919A (ja) | 2011-07-07 |
US9021496B2 (en) | 2015-04-28 |
US20110154354A1 (en) | 2011-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102129410B (zh) | 提供扩展的存储器保护 | |
US7315871B2 (en) | Method, system and program product for interning invariant data objects in dynamic space constrained systems | |
US6360361B1 (en) | Field reordering to optimize cache utilization | |
US20100114999A1 (en) | Method and System to Space-Efficiently Track Memory Access of Object-Oriented Language in Presence of Garbage Collection | |
US9582418B2 (en) | Confirming the sensitivity of a data object in a managed object heap | |
US10102047B2 (en) | In-memory data analytic system that provides an integrated tracking mechanism for explicit memory resources | |
US20160246724A1 (en) | Cache controller for non-volatile memory | |
JP2003519834A (ja) | メモリ管理によって参照の局所性を改善するための方法および装置 | |
CN106919477B (zh) | 一种虚拟磁盘的解析方法及系统 | |
US20120102284A1 (en) | Method for detecting access to object, and computer and computer program product for the same | |
JP5435741B2 (ja) | 競合管理を容易にするための型固定性の使用 | |
JP6048957B2 (ja) | 情報処理装置、プログラム、及び情報処理方法 | |
US8037058B2 (en) | Reducing access time for data in file systems when seek requests are received ahead of access requests | |
JP4959781B2 (ja) | オブジェクト生成地点記録方法およびプログラム | |
US8806461B2 (en) | Using memory usage to pinpoint sub-optimal code for gaming systems | |
US20160378508A1 (en) | Jni object access | |
JP5871589B2 (ja) | 情報処理装置、配列の初期サイズ調整プログラム及び方法 | |
US10031840B2 (en) | Method of ascertaining primary cause of memory consumption in program, and computer system and computer program for the same | |
US20080040407A1 (en) | Identification of a cause of an allocation failure in a java virtual machine | |
Byma et al. | Detailed heap profiling | |
CN103678241B (zh) | 存储器管理控制系统以及存储器管理控制方法 | |
US8413114B1 (en) | Method to simplify developing software having localization | |
JP6138701B2 (ja) | 分散計算方法及び分散計算システム | |
US11113190B2 (en) | Mutable type builder | |
WO2011104889A1 (ja) | 計算機システム、メモリ管理方法及びメモリ管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110726 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111018 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111115 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120131 |
|
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: 20120228 |
|
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: 20120321 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150330 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |