JP2010015223A - Method for isolating object in memory area - Google Patents
Method for isolating object in memory area Download PDFInfo
- Publication number
- JP2010015223A JP2010015223A JP2008172110A JP2008172110A JP2010015223A JP 2010015223 A JP2010015223 A JP 2010015223A JP 2008172110 A JP2008172110 A JP 2008172110A JP 2008172110 A JP2008172110 A JP 2008172110A JP 2010015223 A JP2010015223 A JP 2010015223A
- Authority
- JP
- Japan
- Prior art keywords
- area
- accessed
- access
- inaccessible area
- garbage collection
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】長い期間アクセスされないオブジェクトの存在により、ガベージコレクション(GC)プロセスの動作があってもアクセス速度の低下がないようにする。
【解決手段】コンピュータでガベージコレクションが動作する際、仮想メモリ空間に存在し、予め規定された長い期間アクセスされないオブジェクトを隔離するため、予め規定された長い期間アクセスされないオブジェクト12を非アクセスオブジェクトとして検出する第1のステップと、非アクセスオブジェクトを検出した後所定の期間が経過すると新たに確保した仮想メモリ領域に前記非アクセスオブジェクトを移動する第2のステップと、新たに確保した仮想メモリ領域に移動した後さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域15としてガベージコレクションが当該アクセス不可領域にアクセスしないようにする第3のステップとを実行する。
【選択図】図1An object of the present invention is to prevent an access speed from being lowered even if there is an operation of a garbage collection (GC) process due to the presence of an object that is not accessed for a long period of time.
When garbage collection is performed on a computer, an object that is not accessed for a predetermined long period of time is detected as a non-accessed object in order to isolate an object that exists in a virtual memory space and is not accessed for a predetermined long period A second step of moving the non-access object to a newly reserved virtual memory area when a predetermined period has elapsed after detecting the non-access object, and a move to the newly reserved virtual memory area Then, when a predetermined period of time elapses, the newly secured virtual memory area is set as the inaccessible area 15 and the third step of preventing the garbage collection from accessing the inaccessible area is executed.
[Selection] Figure 1
Description
本発明は、メモリ領域に存在し所定の期間アクセスされないオブジェクトを隔離してメモリ領域を有効に使用するための方法に関し、特に、ヒープメモリ中に存在するオブジェクトを隔離するための方法に関する。 The present invention relates to a method for effectively using a memory area by isolating an object that exists in a memory area and is not accessed for a predetermined period, and more particularly to a method for isolating an object existing in a heap memory.
一般に、パソコンなどのコンピュータにおいて、プロセスの仮想メモリ空間を全て物理メモリ上に保持しておくと、多くのメモリモジュールを必要としてしまい、経済的、エネルギー的に極めて非効率である。このため、有効なデータを保持しているが、長い期間アクセスされない仮想メモリページは、例えば、ディスクへスワップアウトするか、又は低速であるがエネルギー効率のよいメモリへマップすることが望ましい(以下「有効なデータを保持している」ことを「生きている」という)。 Generally, in a computer such as a personal computer, if all the virtual memory space of a process is held on a physical memory, many memory modules are required, which is very inefficient in terms of economy and energy. For this reason, virtual memory pages that hold valid data but have not been accessed for a long period of time are preferably swapped out to disk or mapped to slower but more energy efficient memory (hereinafter “ "Holding valid data" is called "alive").
Java(登録商標)などのプロセスでは、多数のオブジェクトはそのサイズがページサイズより小さく、従って、ヒープメモリ中の同一のページ内に生きているが長い期間アクセスされないオブジェクトと、それ以外のオブジェクトが混在することになる。 In a process such as Java (registered trademark), the size of many objects is smaller than the page size. Therefore, objects that live in the same page in the heap memory but are not accessed for a long time are mixed with other objects. Will do.
図13は、仮想メモリページ中にオブジェクトが混在する様子を示す図である。図13において、X印の付いているオブジェクト11はアクセスされ、X印の付いていないオブジェクト12は長い期間アクセスされないものである。図示のように、全ての仮想メモリページ13中において、アクセスされるオブジェクト(アクセスオブジェクト)11は、少なくとも1つは存在する関係上、これら仮想メモリページ13をスワップアウトしたり、低速なメモリ(図示せず)にマップしたりすることは好ましくない。
FIG. 13 is a diagram illustrating how objects are mixed in a virtual memory page. In FIG. 13, an
さらに、Java(登録商標)などのプロセスでは、所謂ガベージコレクション(Garbage Collection:GC(ゴミ集め))プロセスが数秒〜数分おきに、全ての生きているオブジェクトにアクセスする(このGCプロセスとは、プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である)。従って、たとえ、ユーザプログラムから長い間アクセスされないオブジェクト(非アクセスオブジェクト)があったとしても、当該非アクセスオブジェクトをスワップアウトしたり、低速なメモリにマップしたりすることは好ましくない。 Furthermore, in a process such as Java (registered trademark), a so-called garbage collection (GC) process accesses every living object every few seconds to several minutes (this GC process is This is a function that automatically releases the memory area that the program dynamically allocates when it is no longer needed. Therefore, even if there is an object (non-access object) that has not been accessed for a long time from the user program, it is not preferable to swap out the non-access object or map it to a low-speed memory.
よって、Java(登録商標)などのプロセスにおいて、物理メモリ使用量を削減する際には、ユーザプログラムから長い間アクセスされないオブジェクトを、それ以外のオブジェクトから隔離して別の仮想メモリページに配置することが望ましい。 Therefore, in a process such as Java (registered trademark), when reducing the physical memory usage, an object that is not accessed for a long time by the user program is separated from other objects and placed in another virtual memory page. Is desirable.
この際、高確率で長い期間アクセスされないオブジェクトを選ばないと、ディスクなどにスワップアウトされるか又は低速なメモリにマップされた仮想メモリページにユーザプログラムがアクセスすることになってしまい、アクセス速度が大幅に低下してしまうことになる。 In this case, if an object that is not accessed for a long period of time with a high probability is selected, the user program will access a virtual memory page that is swapped out to a disk or the like or mapped to a low-speed memory, and the access speed is reduced. It will drop significantly.
加えて、Java(登録商標)などのプロセスでは、GCプロセスが動作するから、オブジェクトを隔離した際には、当該隔離されたオブジェクトに対するGCプロセスのアクセスを不要とする必要がある。 In addition, in a process such as Java (registered trademark), a GC process operates. Therefore, when an object is isolated, it is necessary to make the GC process access to the isolated object unnecessary.
ところで、最近アクセスしたオブジェクトを監視して再配置する手法として、特許文献1に記載のものが知られており、ここでは、最近アクセスされたオブジェクトの集合を検出して、同一の仮想メモリページに配置することによってデータ局所性を高めている。そして、特許文献1に記載の手法では、頻繁にアクセスされるオブジェクトとそれ以外のオブジェクトを隔離することになる。
Incidentally, as a technique for monitoring and rearranging recently accessed objects, one disclosed in
一方、非特許文献1には、メモリリークするプログラムを対象にして、生きているが長い間アクセスされないオブジェクトを仮想メモリ空間中で隔離して、ディスクへスワップアウトする手法が提案されている。
On the other hand, Non-Patent
この手法ではGCプロセスの際に、全てのオブジェクトのヘッダ中の1ビットと全てのオブジェクト中のポインタの下位1ビットに1をセットし、ユーザプログラム中の全てのオブジェクトアクセスの直前にバリアコードを挿入して、ポインタとヘッダのビットを0にすることによってGCとGCの間にアクセスされないオブジェクトを検出するようにしている。
ところが、特許文献1に記載の手法においては、長い間アクセスされないオブジェクトを物理メモリから追い出す(隔離する)ことは行わず、単に再配置しているだけであるから、結果的に、GCプロセスが全ての生きているオブジェクトをアクセスしてしまうことになって、アクセス速度の高速化は図れないという課題がある。
However, in the method described in
また、特許文献1に記載の手法では、頻繁にはアクセスされないオブジェクトの中から高確率で長い間アクセスされないオブジェクトを選び出すことも行っていないため、物理メモリ使用量を効果的に削減することは困難であるという課題もある。
Further, in the method described in
一方、非特許文献1に記載の手法においては、バリアコードのオーバーヘッドに起因して、プログラムの実行速度が平均9%程度低下してしまい、特に、ユーザプログラム中にバリアコードが必要なために、物理メモリ量が足りなくなってきた場合にのみ、長い期間アクセスされないオブジェクトを検出するための検出機構を発動するという柔軟な対応を行うことは極めて困難であるという課題がある。
On the other hand, in the method described in
本発明の目的は、GCプロセスの動作があってもアクセス速度が低下することのないオブジェクト隔離方法を提供することにある。 An object of the present invention is to provide an object isolation method in which the access speed does not decrease even when the GC process operates.
本発明の他の目的は、物理メモリ使用量を効果的に削減することのできるオブジェクト隔離方法を提供することにある。 Another object of the present invention is to provide an object isolation method capable of effectively reducing physical memory usage.
本発明のさらに他の目的は、物理メモリ量の使用量に応じて規定の期間(メモリの確保がある定められた閾値よりも長い期間)アクセスされないオブジェクトを検出して隔離を行うことのできるオブジェクト隔離方法を提供することにある。 Still another object of the present invention is to provide an object that can detect and isolate an object that is not accessed for a specified period (a period longer than a predetermined threshold in which memory is reserved) according to the amount of physical memory used. To provide an isolation method.
本発明は、上記課題に鑑み、以下のような解決手段を提供する。 In view of the above problems, the present invention provides the following solutions.
(1)本発明は、仮想メモリ領域に存在し、規定の期間アクセスされないオブジェクトを隔離するための方法であって、ガベージコレクションが動作するコンピュータによって実行され、前記規定の長い期間アクセスされないオブジェクトを非アクセスオブジェクトとして検出する第1のステップと、前記非アクセスオブジェクトを検出した後、所定の期間が経過すると新たに確保した仮想メモリ領域に前記非アクセスオブジェクトを移動する第2のステップと、前記新たに確保した仮想メモリ領域に移動した後、さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域として前記ガベージコレクションが当該アクセス不可領域にアクセスしないようにする第3のステップとを有することを特徴とするものである。 (1) The present invention is a method for isolating an object that exists in a virtual memory area and is not accessed for a specified period of time, and is executed by a computer on which garbage collection is performed, and the object that is not accessed for a specified long period of time is hidden. A first step of detecting as an access object; a second step of moving the non-access object to a newly reserved virtual memory area after a predetermined period of time has elapsed after detecting the non-access object; A third step of making the newly reserved virtual memory area an inaccessible area and preventing the garbage collection from accessing the inaccessible area after a predetermined period of time has passed after moving to the reserved virtual memory area. It is characterized by having .
(1)に記載の方法では、非アクセスオブジェクトを検出した後、所定の期間が経過すると新たに確保した仮想メモリ領域に前記非アクセスオブジェクトを移動し、さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域としてガベージコレクションが当該アクセス不可領域にアクセスしないようにしたので、ガベージコレクションが動作してもアクセス速度が低下することがない。 In the method described in (1), after a non-access object is detected, the non-access object is moved to a newly secured virtual memory area when a predetermined period elapses, and is newly secured when a predetermined period elapses. Since the virtual memory area is set as an inaccessible area so that garbage collection does not access the inaccessible area, the access speed does not decrease even if the garbage collection is operated.
(2)本発明は、(1)に記載の方法において、前記第1のステップでは、前記規定の期間内にアクセスされたとみなされる前記オブジェクトに関してアクセスフラグを立て、前記アクセスされないオブジェクトと区別することによって検出を行うことを特徴とするものである。 (2) In the method according to (1), in the first step, the first step sets an access flag for the object considered to be accessed within the specified period, and distinguishes it from the object that is not accessed. The detection is performed by the following.
(2)に記載の方法では、アクセスフラグを用いてアクセスされないオブジェクトと区別するようにしたので、容易にオブジェクトの区別を行うことができる。 In the method described in (2), since the access flag is used to distinguish the object that is not accessed, the object can be easily distinguished.
(3)本発明は、(2)に記載の方法において、前記第1のステップは、物理メモリの使用量を削減する必要が生じた際に開始されることを特徴とするものである。 (3) In the method according to (2), the present invention is characterized in that the first step is started when it is necessary to reduce the amount of use of physical memory.
(3)に記載の方法では、第1のステップを、物理メモリの使用量を削減する必要が生じた際に開始するようにしたので、必要に応じて効果的に物理メモリ使用量を削減することができる。 In the method described in (3), since the first step is started when it is necessary to reduce the usage amount of the physical memory, the physical memory usage amount is effectively reduced as necessary. be able to.
(4)本発明は、(2)に記載の方法において、前記第1のステップでは、ロード・ストア命令の度にその対象となるオブジェクトにアクセスフラグを立てることを特徴とするものである。 (4) In the method according to (2), the present invention is characterized in that, in the first step, an access flag is set for an object to be processed at each load / store instruction.
(4)に記載の方法では、ロード・ストア命令の度にその対象となるオブジェクトにアクセスフラグを立てるようにしたので、頻繁にはアクセスされないオブジェクトの中から高確率で規定の長い間アクセスされないオブジェクトを選び出すことができる。 In the method described in (4), since an access flag is set for the target object at every load / store instruction, an object that is not accessed for a long time with a high probability among objects that are not frequently accessed. Can be selected.
(5)本発明は、(2)に記載の方法において、前記第1のステップでは、キャッシュミスをおこしたオブジェクト、一定時間毎のサンプリングでヒットしたロード・ストア命令によりアクセスされたオブジェクト、ガベージコレクションが起動した際にレジスタもしくはスタックから直接指されていたオブジェクト、新たに生成されたオブジェクト、世代別ガベージコレクションを用いている場合に新世代領域にあるオブジェクト、世代別ガベージコレクションを用いている場合に旧世代領域にあるが新世代領域を直接指しているオブジェクトのうち少なくとも1つが発生すると、オブジェクトへのアクセスがあったとすることを特徴とするものである。 (5) In the method according to (2), in the first step, in the first step, an object that has caused a cache miss, an object accessed by a load / store instruction that has been hit by sampling at regular intervals, and garbage collection Objects that were directly pointed to from the register or stack at the time of activation, newly created objects, objects in the new generation area when using generational garbage collection, or when using generational garbage collection When at least one of objects in the old generation area but directly pointing to the new generation area is generated, the object is accessed.
(5)に記載の方法では、キャッシュミスをおこしたオブジェクト、一定時間毎のサンプリングでヒットしたロード・ストア命令によりアクセスされたオブジェクト、ガベージコレクションが起動した際にレジスタもしくはスタックから直接指されていたオブジェクト、新たに生成されたオブジェクト、世代別ガベージコレクションを用いている場合に新世代領域にあるオブジェクト、世代別ガベージコレクションを用いている場合に旧世代領域にあるが新世代領域を直接指しているオブジェクトのうち少なくとも1つが発生すると、オブジェクトへのアクセスがあったとするので、頻繁にはアクセスされないオブジェクトの中から高確率で長い間アクセスされないオブジェクトを選び出すことができる。 In the method described in (5), an object that caused a cache miss, an object that was accessed by a load / store instruction that was hit by sampling at regular intervals, or was pointed directly from a register or stack when garbage collection was started Objects, newly created objects, objects in the new generation area when using generational garbage collection, and pointing to the new generation area directly in the old generation area when using generational garbage collection When at least one of the objects occurs, it is assumed that there is an access to the object. Therefore, an object that is not accessed for a long time can be selected from objects that are not frequently accessed.
(6)本発明は、(1)に記載の方法において、前記第2のステップでは、前記新たに確保した仮想メモリ領域を準アクセス不可領域とし、前記アクセスされないオブジェクトを準アクセス不可領域に移した後、不要となった物理メモリを解放することを特徴とするものである。 (6) In the method according to (1), in the method according to (1), in the second step, the newly reserved virtual memory area is set as a semi-inaccessible area, and the non-accessed object is moved to a semi-inaccessible area. After that, the physical memory that has become unnecessary is released.
(6)に記載の方法では、新たに確保した仮想メモリ領域を準アクセス不可領域とし、アクセスされないオブジェクトを準アクセス不可領域に移した後、不要となった物理メモリを解放するようにしたので、プログラムの実行に必要な物理メモリ量を削減することができる。 In the method described in (6), the newly allocated virtual memory area is set as a semi-inaccessible area, and after moving an unaccessed object to the semi-inaccessible area, the unnecessary physical memory is released. The amount of physical memory required for program execution can be reduced.
(7)本発明は、(6)に記載の方法において、前記第3のステップでは、さらに所定の期間が経過する間に、前記準アクセス不可領域にあるオブジェクトに対して、ユーザプログラムからのアクセスがないと、前記準アクセス不可領域をアクセス不可領域とし、前記ユーザプログラムからのアクセスがあると、当該アクセスの対象となったオブジェクトを準アクセス不可領域の外に戻すことを特徴とするものである。 (7) In the method according to (6), in the method according to (6), in the third step, an object in the semi-inaccessible area is accessed from a user program while a predetermined period has elapsed. Otherwise, the semi-inaccessible area is set as an inaccessible area, and when accessed from the user program, the accessed object is returned to the outside of the semi-inaccessible area. .
(7)に記載の方法では、準アクセス不可領域をアクセス不可領域とし、ユーザプログラムからのアクセスがあると、当該アクセスの対象となったオブジェクトを準アクセス不可領域の外に戻すようにしたので、ユーザプログラムによる処理に不都合が生じることがない。 In the method described in (7), the semi-inaccessible area is set as an inaccessible area, and when there is an access from the user program, the access target object is returned to the outside of the semi-inaccessible area. There is no inconvenience in processing by the user program.
(8)本発明は、(7)に記載の方法において、前記第3のステップでは、前記アクセス不可領域の内容を物理メモリ以外のメモリに保存することを特徴とするものである。 (8) In the method according to (7), the present invention is characterized in that, in the third step, the contents of the inaccessible area are stored in a memory other than a physical memory.
(8)に記載の方法では、アクセス不可領域の内容を物理メモリ以外のメモリに保存するようにしたので、物理メモリの使用量を効果的に削減することができる。 In the method described in (8), since the contents of the inaccessible area are stored in a memory other than the physical memory, the amount of use of the physical memory can be effectively reduced.
(9)本発明は、(7)に記載の方法において、前記第3のステップでは、前記アクセス不可領域から外を指すポインタの分身をガベージコレクションのルート集合に追加して、前記ガベージコレクションによって前記アクセス不可領域に対するアクセスが行われないようにすることを特徴とするものである。 (9) In the method according to (7), in the method according to (7), in the third step, a part of a pointer pointing out from the inaccessible area is added to a root set of garbage collection, and the garbage collection It is characterized in that access to the inaccessible area is not performed.
(9)に記載の方法では、アクセス不可領域から外を指すポインタの分身をガベージコレクションのルート集合に追加するようにしたので、ガベージコレクションがアクセス不可領域をアクセスすることを確実に防止できる。 In the method described in (9), since the alternation of the pointer pointing outside from the inaccessible area is added to the root set of the garbage collection, it is possible to reliably prevent the garbage collection from accessing the inaccessible area.
(10)本発明は、(7)に記載の方法において、前記第3のステップでは、前記ガベージコレクションのアルゴリズムを変更して前記アクセス不可領域に対するアクセスが行われないようにすることを特徴とするものである。 (10) In the method according to (7), the present invention is characterized in that, in the third step, the garbage collection algorithm is changed to prevent access to the inaccessible area. Is.
(10)に記載の方法では、ガベージコレクションのアルゴリズムを変更して、アクセス不可領域に対するアクセスが行われないようにしたので、ガベージコレクションがアクセス不可領域をアクセスすることを確実に防止できる。 In the method described in (10), since the garbage collection algorithm is changed so that the inaccessible area is not accessed, it is possible to reliably prevent the garbage collection from accessing the inaccessible area.
(11)本発明は、ガベージコレクションが動作するコンピュータによって実行され、仮想メモリ領域に存在し規定の期間アクセスされないオブジェクトを隔離するためのプログラムであって、前記規定の期間アクセスされないオブジェクトを非アクセスオブジェクトとして検出する第1の命令と、前記非アクセスオブジェクトを検出した後、所定の期間が経過すると新たに確保した仮想メモリ領域に前記非アクセスオブジェクトを移動する第2の命令と、前記新たに確保した仮想メモリ領域に移動した後さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域として前記ガベージコレクションが当該アクセス不可領域にアクセスしないようにする第3の命令とを有することを特徴とするものである。 (11) The present invention is a program for isolating an object which is executed by a computer on which garbage collection operates and which is present in a virtual memory area and is not accessed for a specified period of time. A first instruction for detecting the non-access object, a second instruction for moving the non-access object to a newly reserved virtual memory area after a predetermined period of time has elapsed after detecting the non-access object, and the newly reserved A third instruction for making the newly reserved virtual memory area an inaccessible area and preventing the garbage collection from accessing the inaccessible area when a predetermined period elapses after moving to the virtual memory area. It is a feature.
(11)に記載のプログラムでは、非アクセスオブジェクトを検出した後、所定の期間が経過すると新たに確保した仮想メモリ領域に前記非アクセスオブジェクトを移動し、さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域としてガベージコレクションが当該アクセス不可領域にアクセスしないようにしたので、ガベージコレクションが動作してもアクセス速度が低下することがない。 In the program according to (11), after a non-access object is detected, the non-access object is moved to a newly secured virtual memory area when a predetermined period elapses, and is newly secured when a predetermined period elapses. Since the virtual memory area is set as an inaccessible area so that garbage collection does not access the inaccessible area, the access speed does not decrease even if the garbage collection is operated.
(12)本発明は、(11)に記載のプログラムにおいて、前記第1の命令では、前記規定の期間内にアクセスされたとみなされる前記オブジェクトに関してアクセスフラグを立て、前記アクセスされないオブジェクトと区別することによって検出を行うことを特徴とするものである。 (12) In the program according to (11), the present invention sets an access flag for the object that is considered to be accessed within the specified period in the first instruction, and distinguishes it from the object that is not accessed. The detection is performed by the following.
(12)に記載のプログラムでは、アクセスフラグを用いてアクセスされないオブジェクトと区別するようにしたので、容易にオブジェクトの区別を行うことができる。 In the program described in (12), an object is not easily accessed using an access flag, so that the object can be easily distinguished.
(13)本発明は、(12)に記載のプログラムにおいて、前記第1の命令は、物理メモリの使用量を削減する必要が生じた際に開始されることを特徴とするものである。 (13) In the program described in (12), the present invention is characterized in that the first instruction is started when it is necessary to reduce the amount of use of physical memory.
(13)に記載のプログラムでは、第1の命令を、物理メモリの使用量を削減する必要が生じた際に開始するようにしたので、必要に応じて効果的に物理メモリ使用量を削減することができる。 In the program described in (13), the first instruction is started when it is necessary to reduce the amount of physical memory used. Therefore, the amount of physical memory used can be effectively reduced as necessary. be able to.
(14)本発明は、(12)に記載のプログラムにおいて、前記第1の命令では、ロード・ストア命令の度にその対象となるオブジェクトにアクセスフラグを立てるようにしたことを特徴とするものである。 (14) In the program according to (12), the present invention is characterized in that, in the first instruction, an access flag is set for an object as a target for each load / store instruction. is there.
(14)に記載のプログラムでは、ロード・ストア命令の度にその対象となるオブジェクトにアクセスフラグを立てるようにしたので、頻繁にはアクセスされないオブジェクトの中から高確率で規定の長い間アクセスされないオブジェクトを選び出すことができる。 In the program described in (14), since an access flag is set for the target object at every load / store instruction, an object that is not accessed for a long time with a high probability among objects that are not frequently accessed. Can be selected.
(15)本発明は、(12)に記載のプログラムにおいて、前記第1の命令では、キャッシュミスをおこしたオブジェクト、一定時間毎のサンプリングでヒットしたロード・ストア命令によりアクセスされたオブジェクト、ガベージコレクションが起動した際にレジスタもしくはスタックから直接指されていたオブジェクト、新たに生成されたオブジェクト、世代別ガベージコレクションを用いている場合に新世代領域にあるオブジェクト、世代別ガベージコレクションを用いている場合に旧世代領域にあるが新世代領域を直接指しているオブジェクトのうち少なくとも1つが発生すると、オブジェクトへのアクセスがあったとすることを特徴とするものである。 (15) In the program according to (12), in the program according to (12), in the first instruction, an object that causes a cache miss, an object that is accessed by a load / store instruction that is hit by sampling at regular intervals, and a garbage collection Objects that were directly pointed to from the register or stack at the time of activation, newly created objects, objects in the new generation area when using generational garbage collection, or when using generational garbage collection When at least one of objects in the old generation area but directly pointing to the new generation area is generated, the object is accessed.
(15)に記載のプログラムでは、キャッシュミスをおこしたオブジェクト、一定時間毎のサンプリングでヒットしたロード・ストア命令によりアクセスされたオブジェクト、ガベージコレクションが起動した際にレジスタもしくはスタックから直接指されていたオブジェクト、新たに生成されたオブジェクト、世代別ガベージコレクションを用いている場合に新世代領域にあるオブジェクト、世代別ガベージコレクションを用いている場合に旧世代領域にあるが新世代領域を直接指しているオブジェクトのうち少なくとも1つが発生すると、オブジェクトへのアクセスがあったとするので、頻繁にはアクセスされないオブジェクトの中から高確率で規定の長い間アクセスされないオブジェクトを選び出すことができる。 In the program described in (15), an object that caused a cache miss, an object that was accessed by a load / store instruction that was hit by sampling at regular intervals, or was pointed directly from a register or stack when garbage collection was started Objects, newly created objects, objects in the new generation area when using generational garbage collection, and pointing to the new generation area directly in the old generation area when using generational garbage collection When at least one of the objects occurs, it is assumed that the object is accessed. Therefore, an object that is not accessed for a long time can be selected from objects that are not frequently accessed with a high probability.
(16)本発明は、(11)に記載のプログラムにおいて、前記第2の命令では、前記新たに確保した仮想メモリ領域を準アクセス不可領域とし、前記アクセスされないオブジェクトを前記準アクセス不可領域に移した後、不要となった物理メモリを解放することを特徴とするものである。 (16) In the program according to (11), according to the second instruction, in the second instruction, the newly reserved virtual memory area is set as a semi-inaccessible area, and the object that is not accessed is moved to the semi-inaccessible area. After that, the physical memory that is no longer needed is released.
(16)に記載のプログラムでは、新たに確保した仮想メモリ領域を準アクセス不可領域とし、アクセスされないオブジェクトを準アクセス不可領域に移した後、不要となった物理メモリを解放するようにしたので、プログラムの実行に必要な物理メモリ量を削減することができる。 In the program described in (16), the newly allocated virtual memory area is made a semi-inaccessible area, and after moving an unaccessed object to the semi-inaccessible area, the unnecessary physical memory is released. The amount of physical memory required for program execution can be reduced.
(17)本発明は、(16)に記載のプログラムにおいて、前記第3の命令では、さらに所定の期間が経過する間に、前記準アクセス不可領域にあるオブジェクトに対して、ユーザプログラムからのアクセスがないと、前記準アクセス不可領域をアクセス不可領域とし、前記ユーザプログラムからのアクセスがあると、当該アクセスの対象となったオブジェクトを準アクセス不可領域の外に戻すことを特徴とするものである。 (17) In the program according to (16), in the program according to (16), the third instruction may access an object in the semi-inaccessible area from a user program while a predetermined period has elapsed. Otherwise, the semi-inaccessible area is set as an inaccessible area, and when accessed from the user program, the accessed object is returned to the outside of the semi-inaccessible area. .
(17)に記載のプログラムでは、準アクセス不可領域をアクセス不可領域とし、ユーザプログラムからのアクセスがあると、当該アクセスの対象となったオブジェクトを準アクセス不可領域の外に戻すようにしたので、ユーザプログラムによる処理に不都合が生じることがない。 In the program described in (17), the semi-inaccessible area is set as an inaccessible area, and when there is an access from the user program, the object to be accessed is returned to the outside of the semi-inaccessible area. There is no inconvenience in processing by the user program.
(18)本発明は、(17)に記載のプログラムにおいて、前記第3の命令では、前記アクセス不可領域の内容を物理メモリ以外のメモリに保存することを特徴とするものである。 (18) In the program according to (17), the present invention is characterized in that, in the third instruction, the contents of the inaccessible area are stored in a memory other than a physical memory.
(18)に記載のプログラムでは、アクセス不可領域の内容を物理メモリ以外のメモリに保存するようにしたので、物理メモリの使用量を効果的に削減することができる。 In the program described in (18), the contents of the inaccessible area are stored in a memory other than the physical memory, so that the amount of physical memory used can be effectively reduced.
(19)本発明は、(17)に記載のプログラムにおいて、前記第3の命令では、前記アクセス不可領域から外を指すポインタの分身をガベージコレクションのルート集合に追加して、前記ガベージコレクションによって前記アクセス不可領域に対するアクセスが行われないようにすることを特徴とするものである。 (19) In the program according to (17), in the third instruction, in the third instruction, an alternation of a pointer pointing out from the inaccessible area is added to a garbage collection root set, and the garbage collection performs the above-described garbage collection. It is characterized in that access to the inaccessible area is not performed.
(19)に記載のプログラムでは、アクセス不可領域から外を指すポインタの分身をガベージコレクションのルート集合に追加するようにしたので、ガベージコレクションがアクセス不可領域をアクセスすることを確実に防止できる。 In the program described in (19), since the alternation of the pointer pointing outside from the inaccessible area is added to the root set of the garbage collection, it is possible to reliably prevent the garbage collection from accessing the inaccessible area.
(20)本発明は、(17)に記載のプログラムにおいて、前記第3の命令では、前記ガベージコレクションのアルゴリズムを変更して前記アクセス不可領域に対するアクセスが行われないようにすることを特徴とするものである。 (20) In the program according to (17), the present invention is characterized in that, in the third instruction, the garbage collection algorithm is changed to prevent access to the inaccessible area. Is.
(20)に記載の方法では、ガベージコレクションのアルゴリズムを変更して、アクセス不可領域に対するアクセスが行われないようにしたので、ガベージコレクションがアクセス不可領域をアクセスすることを確実に防止できる。 In the method described in (20), since the garbage collection algorithm is changed so that the inaccessible area is not accessed, it is possible to reliably prevent the garbage collection from accessing the inaccessible area.
以上のように、本発明によれば、ガベージコレクションが動作するコンピュータにおいて、仮想メモリ領域に存在し予め規定された長い期間アクセスされないオブジェクトについて、予め規定された長い期間アクセスされないオブジェクトを非アクセスオブジェクトとして検出し、この非アクセスオブジェクトを検出した後、所定の期間が経過すると新たに確保した仮想メモリ領域に非アクセスオブジェクトを移動して、新たに確保した仮想メモリ領域に移動した後、さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域としてガベージコレクションが当該アクセス不可領域にアクセスしないようにしているので、物理メモリ使用量を効果的に削減することができ、しかもオブジェクトを隔離した際、当該隔離されたオブジェクトに対するガベージコレクションのアクセスが不要となって、アクセス速度が低下することがない。そして、物理メモリ使用量を効果的に削減することができるばかりでなく、物理メモリ量の使用量に応じて長い期間アクセスされないオブジェクトを検出して隔離を行うことができる。 As described above, according to the present invention, in a computer in which garbage collection operates, an object that exists in a virtual memory area and is not accessed for a predetermined long period of time is defined as a non-accessed object. After detecting and detecting this non-access object, when a predetermined period elapses, the non-access object is moved to the newly allocated virtual memory area, moved to the newly allocated virtual memory area, and then for a predetermined period. When this occurs, the newly allocated virtual memory area is set as an inaccessible area so that garbage collection does not access the inaccessible area, so the physical memory usage can be effectively reduced and the object is isolated. When Garbage collection of access to the object and is no longer needed, the access speed is not reduced. In addition to effectively reducing the physical memory usage, it is possible to detect and isolate objects that have not been accessed for a long period of time according to the physical memory usage.
以下、本発明の実施形態について図を参照しながら説明する。図1は、規定の長い期間アクセスされないオブジェクトを隔離した状態を示す図である。まず、コンピュータにおいて、物理メモリ使用量を削減する必要が生じると、オブジェクト隔離機能(図示せず)が動作し、所定の期間内にアクセスされたと見なされるオブジェクトに関してアクセスフラグを立てる。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIG. 1 is a diagram illustrating a state in which an object that has not been accessed for a predetermined long time is isolated. First, when it becomes necessary to reduce the amount of physical memory used in a computer, an object isolation function (not shown) operates, and an access flag is set for an object considered to be accessed within a predetermined period.
例えば、ヒープメモリ(図示せず)への全てのロード・ストア命令の度に対象オブジェクトに対してアクセスフラグを立てても実行速度が大きく低下しないならば、これが最も正確な手法であるが、現実には実行速度が大きく低下するので、近似的な手法として以下のオブジェクトをアクセスされたと見なすことにする。 For example, if the execution speed does not decrease greatly even if the access flag is set for the target object at every load / store instruction to the heap memory (not shown), this is the most accurate method. Since the execution speed is greatly reduced, the following object is considered to be accessed as an approximate method.
(1)キャッシュミスを起こしたオブジェクト、(2)所定時間毎のサンプリングでヒットしたロード・ストア命令によりアクセスされたオブジェクト、(3)GCプロセスが起動したときにレジスタもしくはスタックから直接指されていたオブジェクト、(4)新たに生成されたオブジェクト、(5)世代別GCを用いている場合は新世代領域にあるオブジェクト、(6)世代別GCを用いている場合は旧世代領域にあるが新世代領域を直接指しているオブジェクト(世代別GCのライトセットに入っているオブジェクト)のうち少なくとも1つが発生すると、オブジェクト隔離機能は、オブジェクトへのアクセスがあったとする。これらの手法はユーザプログラム中のバリアコードを必要としないため、特定の期間だけ発動することが可能である。 (1) Object that caused a cache miss, (2) Object accessed by load / store instruction hit by sampling every predetermined time, (3) Directly pointed from register or stack when GC process started Objects, (4) newly created objects, (5) objects in the new generation area when using a generational GC, and (6) objects in the old generation area when using a generational GC. When at least one of the objects directly pointing to the generation area (objects included in the light set of the generational GC) is generated, it is assumed that the object isolation function has accessed the object. Since these methods do not require a barrier code in the user program, they can be activated for a specific period.
所定の期間が経過した時点で、オブジェクト隔離機能は、アクセスフラグが立っていないオブジェクトを新たに確保した仮想メモリページに移動する。ここでは、この仮想メモリページを準アクセス不可領域と呼ぶ。期間が十分に長くない場合は、アクセスされるにもかかわらずフラグが立っていないオブジェクトが存在しうる。この場合は、フラグが立っているオブジェクトの間をつなぐオブジェクトにもフラグを立てて補間する。 When the predetermined period has elapsed, the object isolation function moves an object for which an access flag is not set to a newly reserved virtual memory page. Here, this virtual memory page is called a semi-inaccessible area. If the period is not long enough, there may be objects that are accessed but not flagged. In this case, interpolation is performed by setting a flag on an object connecting between objects with a flag set.
準アクセス不可領域にはこの時点ではまだ物理メモリがマップされており、また同時に、フラグが立っているオブジェクトはより狭い領域に詰め込むことで不要になった物理メモリを解放することができる(図中破線で示す領域14)。そして、オブジェクトのフラグはクリアする。 At this point, the physical memory is still mapped to the semi-inaccessible area, and at the same time, the object that is flagged can be released into the smaller area by releasing the unnecessary physical memory (in the figure). Region 14) indicated by a broken line. Then, the object flag is cleared.
さらに、所定の期間経過する間に、オブジェクト隔離機能は、準アクセス不可領域にあるオブジェクトへのユーザプログラムのアクセスが無いことを確認する。ここでは、準アクセス不可領域全体をページ保護機構でアクセス不可にして(つまり、準アクセス不可領域を図中斜線のアクセス不可領域15とする)、シグナルハンドラでアクセスを検出する。なお、ユーザプログラムからのアクセスがあったオブジェクトは準アクセス不可領域から追い出して通常のヒープメモリへ戻す。
Further, during the elapse of a predetermined period, the object isolation function confirms that the user program does not access the object in the semi-accessible area. Here, the entire semi-inaccessible area is made inaccessible by the page protection mechanism (that is, the semi-inaccessible area is set as the
前述のように、所定の期間が経過した時点で準アクセス不可領域をアクセス不可領域15とする。アクセス不可領域15は物理メモリにはマップされず、その内容は物理メモリ以外の場所に保存される。例えば、ディスクに書き出すか、低速だがエネルギー効率のよいメモリにマップすることができる。
As described above, the semi-inaccessible area is defined as the
ここで、GCプロセスがアクセス不可領域15にアクセスしなくても済むように、アクセス不可領域15の中から外を指すポインタの分身17をGCのルート集合に追加する。また、GCアルゴリズムを変更してアクセス不可領域へのポインタはたどらないようにする。
Here, so that the GC process does not have to access the
続いて、上述した各機能について図面を参照して詳細に説明する。 Next, each function described above will be described in detail with reference to the drawings.
前述したように、物理メモリ使用量を削減する必要が生じた場合に、オブジェクト隔離機能は、所定の期間内にアクセスされたと見なされるオブジェクトを検出してアクセスフラグを立てる。このアクセスフラグとして各オブジェクトのヘッダ中の1ビットを用いることができる。また、ヒープメモリとは別のメモリ領域にアクセスフラグビット用のテーブルを確保するようにしてもよい。 As described above, when the physical memory usage needs to be reduced, the object isolation function detects an object that is considered to be accessed within a predetermined period and sets an access flag. One bit in the header of each object can be used as this access flag. Further, a table for access flag bits may be secured in a memory area different from the heap memory.
本実施の形態では、前述したように、(1)キャッシュミスを起こしたオブジェクト、(2)所定の時間毎のサンプリングでヒットしたロード・ストア命令によりアクセスされたオブジェクト、(3)GCプロセスが起動したときにレジスタもしくはスタックから直接指されていたオブジェクト、(4)新たに生成されたオブジェクト、(5)世代別GCを用いている場合は新世代領域にあるオブジェクト、(6)世代別GCを用いている場合は旧世代領域にあるが新世代領域を直接指しているオブジェクト(世代別GCのライトセットに入っているオブジェクト)について、アクセスされたと見なしている。 In this embodiment, as described above, (1) an object that has caused a cache miss, (2) an object accessed by a load / store instruction that has been hit by sampling every predetermined time, and (3) a GC process is started The object that was pointed directly from the register or stack at the time, (4) the newly created object, (5) the object in the new generation area when using the generational GC, and (6) the generational GC When used, an object that is in the old generation area but directly points to the new generation area (an object in the light set of the generational GC) is regarded as being accessed.
(1)キャッシュミスを起こしたオブジェクト (1) Object that caused a cache miss
キャッシュミスを起こしたオブジェクトはアクセスされたことは確実である。近年のプロセッサでは実行時プロファイルをとる機能の一部として、データキャッシュミスが起きた時に仮想メモリアドレスを記録することができる。また、指定した回数のキャッシュミスに一回だけプロファイリング関数に制御を移すことが可能である。 It is certain that the object that caused the cache miss has been accessed. In recent processors, a virtual memory address can be recorded when a data cache miss occurs as part of the function of taking a runtime profile. It is also possible to transfer control to the profiling function only once for the specified number of cache misses.
プロファイリング関数の中では、それまでに記録された全ての仮想メモリアドレスについてヒープメモリ中にあるかどうかを判定した上で、後述する手法を用いてその仮想メモリアドレスを含むオブジェクトを同定することができる。 In the profiling function, it is possible to identify an object including the virtual memory address by using a method described later after determining whether all the virtual memory addresses recorded so far are in the heap memory. .
この手法では全てのオブジェクトの先頭には仮想関数テーブルへのポインタがあることを利用して、取得した仮想メモリアドレスから低い方へメモリをスキャンして仮想関数テーブルへのポインタと見なすことができるワードを見つけることになる。 In this method, using the fact that there is a pointer to the virtual function table at the beginning of all objects, a word that can be regarded as a pointer to the virtual function table by scanning the memory from the acquired virtual memory address downward. Will find.
(2)所定時間毎のサンプリングでヒットしたロード・ストア命令によりアクセスされたオブジェクト (2) Object accessed by load / store instruction hit by sampling every predetermined time
上記のキャッシュミスのプロファイリングと同様に、所定時間毎にプロファイリング関数に制御を移すことのできるプロセッサが多い。プロファイリング関数の中では直前に実行していた命令とレジスタの内容が取得できるプロセッサが多い。 Similar to the cache miss profiling described above, many processors can transfer control to a profiling function at predetermined intervals. Many profiling functions can obtain the instruction and register contents that were executed immediately before.
直前にロード・ストア命令を実行していたならば、そのロード・ストア命令がアクセスしていた仮想メモリアドレスをレジスタの内容から求めて上述した手法と同様の手法でオブジェクトを同定することができる。 If the load / store instruction was executed immediately before, the virtual memory address accessed by the load / store instruction can be obtained from the contents of the register, and the object can be identified by the same method as described above.
(3)GCプロセスが起動したときにレジスタもしくはスタックから直接指されていたオブジェクト (3) An object that was pointed directly from the register or stack when the GC process was started
レジスタもしくはスタックから直接指されているオブジェクトは近い過去にアクセスされたか、又は近い将来にアクセスされると考えることができる。GCが発生したときにはレジスタやスタックから指されているオブジェクトをたどるので、直接指されているオブジェクトへのアクセスフラグを少ない追加実行コストで立てることが可能となる。 An object pointed directly from a register or stack can be considered accessed in the near past or accessed in the near future. When a GC occurs, the object pointed to from the register or the stack is traced, so that an access flag to the object pointed directly can be set at a low additional execution cost.
(4)新たに生成されたオブジェクト (4) Newly created object
新たに生成されたオブジェクトは近い将来にアクセスされる可能性が高い。従って、オブジェクトの生成時に対応するアクセスフラグを立てておく。 Newly created objects are likely to be accessed in the near future. Therefore, an access flag corresponding to the time of object generation is set up.
(5)世代別GCを用いている場合は新世代領域にあるオブジェクト (5) If a generational GC is used, objects in the new generation area
新世代領域にあるオブジェクトは近い過去にアクセスされて近い将来にGCで回収される可能性が高いので、アクセス不可領域に隔離すべきではない。あるオブジェクトが新世代領域にあるか否かは一般にアドレスから判定可能なので、実際にフラグを立てる必要はない。 Since objects in the new generation area are likely to be accessed in the near past and collected by the GC in the near future, they should not be isolated in the inaccessible area. Whether or not an object is in the new generation area can generally be determined from the address, so there is no need to actually set a flag.
(6)世代別GCを用いている場合は、旧世代領域にあるが新世代領域を直接指しているオブジェクト(世代別GCのライトセットに入っているオブジェクト) (6) When a generational GC is used, an object in the old generation area but directly pointing to the new generation area (an object in the generational GC light set)
新世代領域にあるオブジェクトは近い将来にGCで回収されるか、もしくは旧世代領域に移動する。従って、旧世代領域にあるオブジェクト中の新世代領域を直接指しているフィールドは近い将来にアクセスされて書き換えられる。このようなフィールドは、世代別GCのライトセットに入っているので、それを含むオブジェクトもGCの時に容易にアクセスフラグを立てることができる。 Objects in the new generation area are collected by the GC in the near future or moved to the old generation area. Therefore, the field directly pointing to the new generation area in the object in the old generation area is accessed and rewritten in the near future. Since such a field is included in the light set of the generational GC, an object including the field can easily set an access flag at the time of the GC.
図2(a)及び(b)は、物理メモリ量を増加することなくオブジェクトの移動を説明するための図であり、所定の期間が経過した時点で、アクセスフラグが立っていないオブジェクトは準アクセス不可領域へ移動される。この移動はGCにオブジェクトを移動する仕組みが備わっていればそれを利用することが望ましい。よって、上記の移動はGCと同時に行ってもよく、移動が終わったら全てのアクセスフラグがクリアされる。 FIGS. 2A and 2B are diagrams for explaining the movement of an object without increasing the amount of physical memory. When a predetermined period elapses, an object for which an access flag is not set is quasi-accessed. It is moved to the impossible area. It is desirable to use this movement if the GC has a mechanism for moving an object. Therefore, the above movement may be performed simultaneously with the GC, and all the access flags are cleared when the movement is completed.
次段階以降においては、あるオブジェクトが準アクセス不可領域に含まれているか否かをアドレスから容易に判定可能とする必要がある。従って、将来的に準アクセス不可領域として用いる連続した広い仮想メモリ領域を予め起動時にメモリマップに類するシステムコールで予約しておくことが好ましい。 From the next stage onward, it is necessary to be able to easily determine whether an object is included in the semi-inaccessible area from the address. Therefore, it is preferable to reserve a continuous large virtual memory area to be used as a semi-inaccessible area in the future with a system call similar to a memory map at the time of activation.
準アクセス不可領域は、この段階では物理メモリにマップされている必要がある。従って、単純な実装では一時的に必要な物理メモリ量が増加する。ただし、アクセスフラグが立っているオブジェクトはより狭い領域へ詰め込まれるため、オブジェクトの移動が終わった時点で不要になったヒープメモリ領域を解放することができる。 The semi-inaccessible area needs to be mapped to physical memory at this stage. Therefore, the amount of physical memory required temporarily increases with a simple implementation. However, since the object with the access flag set is packed into a narrower area, the heap memory area that is no longer necessary when the object has been moved can be released.
必要とする物理メモリ量を増やさない実装としては、まず図2(a)に示すように、通常のヒープメモリ領域中でアクセスフラグが立っているオブジェクト11と、アクセスフラグが立っていないオブジェクト12とを異なる仮想メモリページ13に隔離する
As an implementation that does not increase the amount of required physical memory, first, as shown in FIG. 2A, an
続いて、図2(b)に示すように、アクセスフラグが立っていないオブジェクト12の入ったページをオペレティングシステム(OS)のサポートにより、準アクセス不可領域16として予約された仮想メモリページにマップし直す。つまり、図中の太線で示すようにオブジェクト12の物理メモリアドレスを変えずに仮想メモリアドレスだけを変えることになる。
Subsequently, as shown in FIG. 2B, the page containing the
この際、オブジェクト11のアクセスフラグを立てる期間を十分にとらないと、図3に示すように、アクセスフラグが不十分な状態となる。図3に示す例では、オブジェクト11aとオブジェクト11bにアクセスがあったにもかかわらずアクセスフラグが立っていないものとすると、アクセスフラグが立っていないオブジェクトをこのままの状態で、準アクセス不可領域に移動すると、後述するように、次段階において実行時間の大きな増加につながる。
At this time, if the period for setting the access flag for the
この場合、アクセスフラグが立っているオブジェクトの間を繋ぐオブジェクトにもアクセスフラグを立てて補間するようにしてもよい。 In this case, an access flag may be set and interpolation may be performed for an object connecting between objects having an access flag set.
ここでは、ヒューリスティクスを用いてアクセスフラグを補間するアルゴリズムについて説明する。 Here, an algorithm for interpolating access flags using heuristics will be described.
図4は、ヒューリスティクスを用いてアクセスフラグを補間するアルゴリズムを示すフローチャートである。図4において、R=GCのルート集合(ポインタ値を持つマシンレジスタやマシンスタック中のエントリ)をフィールドとして持つ仮想的なオブジェクトとする(ステップS1)。 FIG. 4 is a flowchart illustrating an algorithm for interpolating access flags using heuristics. In FIG. 4, a virtual object having a route set of R = GC (a machine register having a pointer value or an entry in the machine stack) as a field is set (step S1).
Rを引数として、mark_pointer_fields()を呼び出す。mark_pointer_fields()の機能は、オブジェクトのグラフを深さ優先探索して、各オブジェクトのポインタフィールドのうちアクセスフラグが立っている他のオブジェクトまでの距離が遠いフィールドをマークすることである(ステップS2)。マークはフィールドの最下位1ビットを用いる。 Mark_pointer_fields () is called with R as an argument. The function of mark_pointer_fields () is to perform depth-first search on the graph of the object, and mark a field far from the other object for which the access flag is set among the pointer fields of each object (step S2). . The mark uses the least significant 1 bit of the field.
Rを引数として、interpolate_accessed_objects()を呼び出す。interpolate_accessed_objects()の機能は、オブジェクトのグラフを再び深さ優先探索して、アクセスフラグが立っているオブジェクトを初めて訪れた時にそこに至るまでのパス中の全てのオブジェクトへのアクセスフラグを立てることである。各オブジェクトの先を探索する際にはマークされていないフィールドを優先する(ステップS3)。 Interpolate_accessed_objects () is called with R as an argument. The function interpolate_accessed_objects () is a depth-first search of the object graph again, and when an object with an access flag is set for the first time, the access flag is set for all objects in the path up to that point. is there. When searching for the tip of each object, priority is given to an unmarked field (step S3).
図5は、mark_pointer_fields(object)の機能を示すフローチャートである。図5において、mark_pointer_fields(object)が開始されると、オブジェクトobjectを引数として受け取り(ステップS4)、当該objectが処理済であるか否かを判定する(ステップS5)。 FIG. 5 is a flowchart showing the function of mark_pointer_fields (object). In FIG. 5, when mark_pointer_fields (object) is started, the object object is received as an argument (step S4), and it is determined whether or not the object has been processed (step S5).
objectが処理済であると、続いて、objectのアクセスフラグが立っているか否かを判定し(ステップS6)、アクセスフラグが立っていれば、アクセスフラグが立っている最も近いオブジェクトへの近似的な距離を求めるので、この場合は距離としてゼロを返す(ステップS7)。一方、アクセスフラグが立っていなければ、距離がわからない場合に該当するので、1以上の任意の整数を返す(ステップS8)。 If the object has been processed, it is then determined whether or not the object access flag is set (step S6). If the access flag is set, the approximation to the closest object with the access flag set is made. In this case, zero is returned as the distance (step S7). On the other hand, if the access flag is not set, it corresponds to the case where the distance is not known, so an arbitrary integer of 1 or more is returned (step S8).
ステップS5においてobjectが処理済でなければ、ステップS9でobjectに処理済フラグを立て、配列distancesをゼロに初期化する。そして、objectの全てのポインタフィールドについて処理を行ったか否かを判定し(ステップS10)、処理していなければ、当該ポインタフィールドpが指すオブジェクトを引数として、mark_pointer_fields(object)を呼び出し、その結果をdistances[p]に格納する(ステップS11)。そして、ステップS10に戻る。 If the object has not been processed in step S5, a processed flag is set in the object in step S9, and the array distances is initialized to zero. Then, it is determined whether or not processing has been performed for all pointer fields of the object (step S10). If not, mark_pointer_fields (object) is called with the object pointed to by the pointer field p as an argument, and the result is obtained. Stored in distances [p] (step S11). Then, the process returns to step S10.
ステップS10において、objectの全てのポインタフィールドについて処理を行っていれば、続いて、配列distancesの中から閾値を1つ選ぶ(ステップS12)。なお、最も単純なアルゴリズムとしては最小値を選択する。 If all the pointer fields of the object have been processed in step S10, then one threshold value is selected from the array distances (step S12). Note that the minimum value is selected as the simplest algorithm.
さらに、objectの全てのポインタフィールドについて処理したか否かを判定し(ステップS13)、処理していなければ、このポインタフィールドpに対応する値distances[p]が閾値より大きいか否かを判断する(ステップS14)。大きければ、このポインタフィールドの最下位1ビットを立ててマークし(ステップS15)、ステップS13に戻る。なお、ポインタフィールドpに対応する値distances[p]が閾値以下であると、ステップS13に戻る。 Further, it is determined whether or not all pointer fields of the object have been processed (step S13). If not, it is determined whether or not the value distances [p] corresponding to the pointer field p is greater than the threshold value. (Step S14). If it is larger, the least significant bit of this pointer field is set and marked (step S15), and the process returns to step S13. If the value distances [p] corresponding to the pointer field p is equal to or smaller than the threshold value, the process returns to step S13.
一方、ステップS13において、objectの全てのポインタフィールドについて処理していれば、objectのアクセスフラグが立っているか否かを判定し(ステップS16)、アクセスフラグが立っていれば、ゼロを返す(ステップS17)。ステップS16において、objectのアクセスフラグが立っていないと、objectがポインタフィールドを持つか否かを判定する(ステップS18)。 On the other hand, if all the pointer fields of the object are processed in step S13, it is determined whether or not the object access flag is set (step S16). If the access flag is set, zero is returned (step S16). S17). If the object access flag is not set in step S16, it is determined whether or not the object has a pointer field (step S18).
ステップS18において、objectがポインタフィールドを持っていれば、配列distancesの最小値+1を返し(ステップS19)、objectがポインタフィールドを持っていなければ、行き止まりオブジェクトであるので、無限遠をあらわす最大の整数値を返す(ステップS20)。 In step S18, if the object has a pointer field, the minimum value +1 of the array distances is returned (step S19). If the object does not have a pointer field, the object is a dead end object, so that the maximum adjustment representing infinity is obtained. A numerical value is returned (step S20).
図6は、interpolate_accessed_objects(object)の機能について説明するフローチャートである。図6において、interpolate_accessed_objects(object)が開始されると、オブジェクトobjectを引数として受け取り(ステップS21)、当該objectが処理済であるか否かを判定する(ステップS22)。 FIG. 6 is a flowchart for explaining the function of interpolate_accessed_objects (object). In FIG. 6, when interfere_accessed_objects (object) is started, the object object is received as an argument (step S21), and it is determined whether or not the object has been processed (step S22).
objectが処理済であると、呼び出し元に戻り(ステップS23)、objectが処理済でないと、objectに処理済フラグを立てる(ステップS24)。続いて、objectのアクセスフラグが立っているか否かを判定し(ステップS25)、アクセスフラグが立っていれば、interpolate_accessed_objects(object)の再帰呼び出しスタックを遡ってアクセスフラグが立っていない引数オブジェクトのフラグを立てる(ステップS26)。 If the object has been processed, the process returns to the caller (step S23). If the object has not been processed, a processed flag is set for the object (step S24). Subsequently, it is determined whether or not the object access flag is set (step S25). If the access flag is set, the flag of the argument object for which the access flag is not set by tracing back the interpolated_accessed_objects (object) recursive call stack. (Step S26).
続いて、objectの全てのポインタフィールドについて処理を行ったか否かを判定する(ステップS27)。なお、ステップS25でアクセスフラグが立っていないと、処理はステップS27に進む。 Subsequently, it is determined whether or not processing has been performed for all pointer fields of the object (step S27). If the access flag is not set in step S25, the process proceeds to step S27.
ステップS27でobjectの全てのポインタフィールドについて処理を行っていると、再度objectの全てのポインタフィールドについて処理したか否かを判定し(ステップS28)、処理していれば、呼び出し元に戻る(ステップS29)。 If all the pointer fields of the object have been processed in step S27, it is determined again whether or not all the pointer fields of the object have been processed (step S28). S29).
ステップS28において、objectの全てのポインタフィールドについて処理を行っていないと、当該ポインタフィールドにマークが付いているか否かを判定し(ステップS30)、マークが付いていれば、このポインタフィールドの最下位ビットをゼロにして、このポインタフィールドが指すオブジェクトを引数として、interpolate_accessed_objects(object)を呼び出す(ステップS31)。そして、ステップS28に戻る。なお、ステップS30においてマークが付いていなければ、処理はステップS28に戻る。 In step S28, if processing has not been performed for all pointer fields of the object, it is determined whether or not the pointer field is marked (step S30). The bit is set to zero, and interpolate_accessed_objects (object) is called with the object pointed to by the pointer field as an argument (step S31). Then, the process returns to step S28. If there is no mark in step S30, the process returns to step S28.
前述のステップS27において、objectの全てのポインタフィールドについて処理を行っていないと、当該ポインタフィールドにマークが付いているか否かを判定し(ステップS32)、マークが付いていれば、ステップS27に戻る。 In step S27 described above, if all the pointer fields of the object are not processed, it is determined whether or not the pointer field is marked (step S32). If the mark is added, the process returns to step S27. .
一方、ステップS32においてマークが付いていないと、このポインタフィールドが指すオブジェクトを引数として、interpolate_accessed_objects(object)を呼び出す(ステップS33)。そして、ステップS27に戻る。 On the other hand, if there is no mark in step S32, interpolate_accessed_objects (object) is called with the object pointed to by the pointer field as an argument (step S33). Then, the process returns to step S27.
図7(a)にmark_pointer_fields()の結果の例を示す。ここではthresholdとしてdistanceの最小値を用いたと仮定する。括弧で示す番号は深さ優先順の一例、太い矢印はマークが付かなかったポインタを表す。次のinterpolate_accessed_objects()ではマークが付いていないポインタを優先してもう一度深さ優先探索を行う。その結果を図7(b)に示す。 FIG. 7A shows an example of the result of mark_pointer_fields (). Here, it is assumed that the minimum value of distance is used as threshold. The numbers shown in parentheses are examples of depth priority order, and the thick arrows represent pointers that are not marked. In the next interpolate_accessed_objects (), a depth-first search is performed again with priority given to a pointer without a mark. The result is shown in FIG.
このアルゴリズムによりオブジェクト11aのアクセスフラグを立てることができる。オブジェクト11bのフラグは立てることができないが、後述の段階でオブジェクト11bへのアクセスを検出することができる。
With this algorithm, the access flag of the
続いて、準アクセス不可領域にあるオブジェクトが長い間アクセスされないことの確認を行う。上述したアクセスフラグを立てる手法は近似的であるため、準アクセス不可領域に移動したオブジェクトが高い確率で長い間アクセスされないことを確認する必要がある。そこで、さらに所定の期間、GC以外の時間は準アクセス不可領域全体をページ保護機構でアクセス不可にする。 Subsequently, it is confirmed that an object in the semi-accessible area is not accessed for a long time. Since the above-described method for setting an access flag is approximate, it is necessary to confirm that an object that has moved to a semi-inaccessible area is not accessed for a long time with a high probability. In view of this, the entire semi-inaccessible area is made inaccessible by the page protection mechanism for a period other than GC for a predetermined period.
もしもユーザプログラムから準アクセス不可領域にアクセスがあった場合はシグナルハンドラに制御が移る。シグナルハンドラ中ではアクセスした仮想メモリアドレスが取得できるので、オブジェクトを同定してアクセスフラグを立てる。次のGCの時にアクセスフラグが立っているオブジェクトは通常のヒープメモリ領域に戻してフラグをクリアする。 If the user program accesses a semi-inaccessible area, control is transferred to the signal handler. Since the accessed virtual memory address can be acquired in the signal handler, the object is identified and an access flag is set. The object for which the access flag is set at the next GC is returned to the normal heap memory area and the flag is cleared.
図8は図2に続く状態を示している。オブジェクト11cにアクセスがあったので、通常のヒープメモリ領域に戻している。また、この期間中にオブジェクトのリンク関係が変わり、図8に示すオブジェクト11bのように準アクセス不可領域16からしか指されないオブジェクトが生じることがある。このようなオブジェクト11bは後述するように準アクセス不可領域16に移動される。
FIG. 8 shows a state following FIG. Since the
続いて、準アクセス不可領域16をアクセス不可領域15に設定する。所定の期間が経過した時点で、準アクセス不可領域16を実際にアクセス不可領域15として物理メモリから追い出す。ただし、この時点で準アクセス不可領域16中からある閾値数以上のオブジェクトが通常のヒープメモリ領域に戻されていたならば、物理メモリから追い出すのをやめて全体を通常のヒープメモリ領域に戻すようにしてもよい。
Subsequently, the
まず準備として、図9(a)に示すように準アクセス不可領域16からしか指されないオブジェクトを準アクセス不可領域16に移動する。具体的には、GCと同様にルート集合からオブジェクトをたどってマークを付けるが、準アクセス不可領域16へのポインタはたどらずに記録しておく。次に、準アクセス不可領域16へのポインタをルート集合として残りのオブジェクトをたどり、マークされていない通常のヒープ領域中のオブジェクトを見つけたら再帰的に準アクセス不可領域16へ移動する。
First, as a preparation, an object that is pointed only from the
上記の探索と移動の際に、準アクセス不可領域16の中から外を指すポインタを見つけた場合は、分身17をGCのルート集合に登録しておく。ここで分身17は対応するポインタの参照元と参照先の情報を有する。この分身17からオブジェクトへの参照がないと、将来的にアクセス不可領域15からしか指されなくなった場合に間違ってGCで回収されてしまうことになる。
During the above search and movement, if a pointer pointing to the outside is found from the
オブジェクトの探索と移動が終わると、準アクセス不可領域16をアクセス不可領域15として設定する。設定の仕方にはアクセス不可領域15の内容をどこに保存するかによって3つの選択肢がある。ただし、いずれの場合もGCはアクセス不可領域15へのポインタはたどらない。
When the object search and movement are completed, the
図9(b)に低速だがエネルギー効率の良いメモリへアクセス不可領域15をマップする場合を示す。この場合には、ユーザプログラムがアクセス不可領域15にアクセスした時にも低速だがそのまま読み書きできる。ただし、ユーザプログラムからの読み書きを検出するためにページ保護機構により読み書き禁止にするようにしてもよい。
FIG. 9B shows a case where the
分身17から指されるオブジェクトをGCが移動した場合、参照元のアクセス不可領域15中のオブジェクトのフィールドも書き換える必要がある。ただし、書き換える必要のあるオブジェクトはアクセス不可領域15中の全オブジェクトのごく一部である。この設定ではオブジェクトの移動のたびにアクセス不可領域15への書き込みが必要なため、ディスクへスワップアウトする場合には向いていない。
When the GC moves an object pointed to by the
GCによるオブジェクトの書き換えを避けるためには図10(a)及び(b)に示す2種類の設定のいずれかが用いられる。 In order to avoid rewriting of an object by GC, one of the two types of settings shown in FIGS. 10A and 10B is used.
図10(a)に示す設定では、分身17から指されるオブジェクトを移動不可とする。このため、ヒープメモリ領域のフラグメンテーションが起きる可能性がある。アクセス不可領域15を低速だがエネルギー効率のよいメモリへマップする場合、ユーザプログラムはそのまま読み書きできる。ディスクへスワップアウトする場合は、ページ保護機構で読み書き禁止にして、ユーザプログラムからアクセスがあった場合は物理メモリに一時的にスワップインする必要がある。
In the setting shown in FIG. 10A, the object pointed to by the alternate 17 is not allowed to move. For this reason, fragmentation of the heap memory area may occur. When mapping the
図10(b)に示す設定では、準アクセス不可領域16をアクセス不可領域15にする際に中から外を指すポインタを書き換えて対応する分身17を指すようにする。分身17の仮想メモリ空間上の位置は変わらないため、分身17から指されるオブジェクトを移動してもアクセス不可領域15中のオブジェクトを書き換える必要はない。
In the setting shown in FIG. 10B, when the
その代わりに、ユーザプログラムはアクセス不可領域15をそのまま読み書きできないため、ページ保護機構で読み書き禁止にする。そして、ユーザプログラムからアクセスがあった場合は物理メモリに一時的にスワップインして、分身17の情報を用いてポインタを正しく書き直す必要がある。
Instead, since the user program cannot read and write the
一度設定したアクセス不可領域15に新たにオブジェクトが追加されることはない。これは、既存のアクセス不可領域15にはなるべくアクセスしないで済ますためである。もし長い間アクセスされないオブジェクトを新たに検出した場合は、図11に示すように、新たなアクセス不可領域15aを設定する。ここで、新たなアクセス不可領域15aの中から外を指すポインタについては、その指す先が通常のヒープメモリか他のアクセス不可領域15かに関わらずに分身17を生成する。
No new object is added to the
アクセス不可領域15、15aをページ保護機構で読み書き禁止にする場合、ユーザプログラムからのアクセスを監視することができる。もし頻繁にアクセスがあるならば、そのアクセス不可領域15、15a中のオブジェクト全てを通常のヒープメモリ領域に戻すようにしてもよい。その例を図12に示す。また、アクセス不可領域15、15aに対応する分身17は削除される。
When reading / writing is prohibited in the
このようにして、本実施の形態では、ユーザプログラムのアクセスがあっても、アクセス速度が低下することがなく、しかもオブジェクトを隔離した際、当該隔離されたオブジェクトに対するガベージコレクションのアクセスが不要となって、アクセス速度が低下することがない。そして、物理メモリ使用量を効果的に削減することができるばかりでなく、物理メモリ量の使用量に応じて長い期間アクセスされないオブジェクトを検出して隔離を行うことができることになる。 In this way, in this embodiment, even when a user program accesses, the access speed does not decrease, and when an object is isolated, garbage collection access to the isolated object becomes unnecessary. Thus, the access speed does not decrease. In addition to effectively reducing the physical memory usage, it is possible to detect and isolate an object that is not accessed for a long period of time according to the physical memory usage.
11、11a、11b、11c、12 オブジェクト
13 仮想メモリページ
15 アクセス不可領域
16 準アクセス不可領域
17 分身
11, 11a, 11b, 11c, 12
Claims (20)
前記規定の期間アクセスされないオブジェクトを非アクセスオブジェクトとして検出する第1のステップと、
前記非アクセスオブジェクトを検出した後、所定の期間が経過すると新たに確保した仮想メモリ領域に前記非アクセスオブジェクトを移動する第2のステップと、
前記新たに確保した仮想メモリ領域に移動した後さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域として前記ガベージコレクションが当該アクセス不可領域にアクセスしないようにする第3のステップとを有することを特徴とするオブジェクト隔離方法。 A method for isolating objects that exist in a virtual memory area and are not accessed for a specified period of time, executed by a computer running garbage collection,
A first step of detecting an object that is not accessed for the specified period as a non-access object;
A second step of moving the non-access object to a newly reserved virtual memory area after a predetermined period of time has elapsed after detecting the non-access object;
A third step of preventing the garbage collection from accessing the inaccessible area by setting the newly reserved virtual memory area as an inaccessible area after a predetermined period of time has elapsed after moving to the newly allocated virtual memory area An object isolation method comprising:
前記規定の期間アクセスされないオブジェクトを非アクセスオブジェクトとして検出する第1の命令と、
前記非アクセスオブジェクトを検出した後、所定の期間が経過すると新たに確保した仮想メモリ領域に前記非アクセスオブジェクトを移動する第2の命令と、
前記新たに確保した仮想メモリ領域に移動した後さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域として前記ガベージコレクションが当該アクセス不可領域にアクセスしないようにする第3の命令とを有することを特徴とするオブジェクト隔離プログラム。 A program for isolating an object that is executed by a computer on which garbage collection runs and that is present in a virtual memory area and is not accessed for a specified period of time,
A first instruction for detecting an object that is not accessed for the specified period as a non-access object;
A second instruction to move the non-access object to a newly reserved virtual memory area after a predetermined period of time has elapsed after detecting the non-access object;
A third instruction for making the newly reserved virtual memory area an inaccessible area and preventing the garbage collection from accessing the inaccessible area when a predetermined period of time elapses after moving to the newly allocated virtual memory area And an object isolation program.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008172110A JP2010015223A (en) | 2008-07-01 | 2008-07-01 | Method for isolating object in memory area |
| US12/494,557 US20100005265A1 (en) | 2008-07-01 | 2009-06-30 | Method for isolating objects in memory region |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008172110A JP2010015223A (en) | 2008-07-01 | 2008-07-01 | Method for isolating object in memory area |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010015223A true JP2010015223A (en) | 2010-01-21 |
Family
ID=41465243
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008172110A Pending JP2010015223A (en) | 2008-07-01 | 2008-07-01 | Method for isolating object in memory area |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20100005265A1 (en) |
| JP (1) | JP2010015223A (en) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011204035A (en) * | 2010-03-25 | 2011-10-13 | Fujitsu Ltd | Operation processing device and method of detecting memory leak |
| DE112011103536T5 (en) | 2010-10-20 | 2013-08-01 | International Business Machines Corp. | A method of detecting access to an object and computer and computer program product therefor |
| US9003146B2 (en) | 2011-08-03 | 2015-04-07 | International Business Machines Corporation | Managing memory of a computer |
| JP2015114957A (en) * | 2013-12-13 | 2015-06-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Method, program, and system for reducing cost of stack scan |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011134202A (en) * | 2009-12-25 | 2011-07-07 | Internatl Business Mach Corp <Ibm> | Memory management device, memory management method, and memory management program |
| US9959049B1 (en) * | 2016-09-29 | 2018-05-01 | EMC IP Holding Company LLC | Aggregated background processing in a data storage system to improve system resource utilization |
| US10866888B2 (en) * | 2018-01-11 | 2020-12-15 | Intel Corporation | Reservation architecture for overcommitted memory |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0269842A (en) * | 1988-09-05 | 1990-03-08 | Mitsubishi Electric Corp | Garbage collection method |
| JPH11203193A (en) * | 1998-01-14 | 1999-07-30 | Hitachi Ltd | Shared memory management device and method |
| JP2002278828A (en) * | 2001-03-21 | 2002-09-27 | Sony Corp | Garbage collection execution method, computer program, program storage medium, and information processing device |
| JP2005108235A (en) * | 2003-09-30 | 2005-04-21 | Internatl Business Mach Corp <Ibm> | Autonomous memory leak detection and repair |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7769974B2 (en) * | 2004-09-10 | 2010-08-03 | Microsoft Corporation | Increasing data locality of recently accessed resources |
-
2008
- 2008-07-01 JP JP2008172110A patent/JP2010015223A/en active Pending
-
2009
- 2009-06-30 US US12/494,557 patent/US20100005265A1/en not_active Abandoned
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0269842A (en) * | 1988-09-05 | 1990-03-08 | Mitsubishi Electric Corp | Garbage collection method |
| JPH11203193A (en) * | 1998-01-14 | 1999-07-30 | Hitachi Ltd | Shared memory management device and method |
| JP2002278828A (en) * | 2001-03-21 | 2002-09-27 | Sony Corp | Garbage collection execution method, computer program, program storage medium, and information processing device |
| JP2005108235A (en) * | 2003-09-30 | 2005-04-21 | Internatl Business Mach Corp <Ibm> | Autonomous memory leak detection and repair |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011204035A (en) * | 2010-03-25 | 2011-10-13 | Fujitsu Ltd | Operation processing device and method of detecting memory leak |
| DE112011103536T5 (en) | 2010-10-20 | 2013-08-01 | International Business Machines Corp. | A method of detecting access to an object and computer and computer program product therefor |
| US9003146B2 (en) | 2011-08-03 | 2015-04-07 | International Business Machines Corporation | Managing memory of a computer |
| JP2015114957A (en) * | 2013-12-13 | 2015-06-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Method, program, and system for reducing cost of stack scan |
| US10423526B2 (en) | 2013-12-13 | 2019-09-24 | International Business Machines Corporation | Method, program, and system for reducing the cost of stack scanning |
| US11314640B2 (en) | 2013-12-13 | 2022-04-26 | International Business Machines Corporation | Method, program, and system for reducing the cost of stack scanning |
Also Published As
| Publication number | Publication date |
|---|---|
| US20100005265A1 (en) | 2010-01-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2010015223A (en) | Method for isolating object in memory area | |
| KR101612922B1 (en) | Memory system and method of managing memory system | |
| US10545672B2 (en) | Method for accessing extended memory, device, and system | |
| CN100593217C (en) | Flash memory control device, memory management method, and memory chip | |
| KR101453313B1 (en) | Method for Page-level address mapping using flash memory and System thereof | |
| KR101013266B1 (en) | Instant cache storage | |
| KR100512665B1 (en) | Space-limited marking structure for tracing garbage collectors | |
| US8028120B2 (en) | System with flash memory device and data recovery method thereof | |
| EP0780769A1 (en) | Hybrid numa coma caching system and methods for selecting between the caching modes | |
| CN104102591A (en) | Computer subsystem and method for implementing flash translation layer therein | |
| EP0780770A1 (en) | Hybrid numa coma caching system and methods for selecting between the caching modes | |
| US20030191901A1 (en) | Prefetch queue | |
| CN102831087B (en) | Data read-write processing method based on mixing memory and device | |
| TW201903612A (en) | Memory module and method for operating memory module | |
| JP2009020881A (en) | Processing system that implements memory organization with variable page size | |
| KR101893966B1 (en) | Memory management method and device, and memory controller | |
| JP2006526203A5 (en) | ||
| JP2005158040A (en) | Lazy flushing of translation lookaside buffer | |
| US20160246724A1 (en) | Cache controller for non-volatile memory | |
| US7080220B2 (en) | Page replacement with a re-reference indicator | |
| US8151086B2 (en) | Early detection of an access to de-allocated memory | |
| KR20090129395A (en) | Data prefetching methods, computer program products, and data prefetching systems | |
| CN111625482B (en) | Sequential flow detection method and device | |
| US20030046482A1 (en) | Data management in flash memory | |
| US20080162611A1 (en) | Methods and apparatus for marking objects for garbage collection in an object-based memory system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110615 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130319 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130409 |
|
| RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20130419 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130910 |