WO2013128492A1 - 計算機、プログラム及びメモリ管理方法 - Google Patents

計算機、プログラム及びメモリ管理方法 Download PDF

Info

Publication number
WO2013128492A1
WO2013128492A1 PCT/JP2012/001432 JP2012001432W WO2013128492A1 WO 2013128492 A1 WO2013128492 A1 WO 2013128492A1 JP 2012001432 W JP2012001432 W JP 2012001432W WO 2013128492 A1 WO2013128492 A1 WO 2013128492A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
storage area
held
program
area
Prior art date
Application number
PCT/JP2012/001432
Other languages
English (en)
French (fr)
Inventor
元樹 小幡
康志 宮田
博泰 西山
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US14/359,325 priority Critical patent/US20140337597A1/en
Priority to PCT/JP2012/001432 priority patent/WO2013128492A1/ja
Priority to JP2014501826A priority patent/JP5657169B2/ja
Publication of WO2013128492A1 publication Critical patent/WO2013128492A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • G06F12/0276Generational garbage collection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Definitions

  • the present invention relates to a computer, a program, and a memory management method, and more particularly to a computer, a program, and a memory management method for managing a data reference relationship.
  • a technique for stopping processing on data is used.
  • Such a data reference relationship investigation is used, for example, in a garbage collection that automatically manages the necessity of data, and in a garbage collector used in a Java (registered trademark) virtual machine,
  • a stop-the-world method is used that completely stops the operation of an operating application (hereinafter referred to as “AP” or “program”).
  • the reason why the processing for data is stopped in the data reference relation investigation is to prevent the reference relation from being rewritten due to data update or deletion during the reference investigation.
  • This method is similar to the Java garbage collector. There are many things that investigate the reference relationship between data using. When the reference relationship investigation time increases, the stop time of program execution (processing for data) also increases, and processing delay occurs.
  • Non-Patent Document 1 discloses a technique for limiting a reference investigation area for a system that does not update data such as a functional language. According to this technique, memory areas are first divided into an area for storing old generation data and an area for storing new generation data in the order in which data is generated. And, by preferentially executing unnecessary area collection processing for areas that store new generation data, the number of unnecessary data collection processes required to collect a certain amount of areas is reduced. It has become. As a result, this technique can reduce the stop time of processing such as application.
  • Non-Patent Document 2 discloses a technique for limiting the reference survey area by increasing the number of generations in generational garbage collection.
  • this technique at the time of recovery processing of a memory area for storing unnecessary data, only one area divided by generation is targeted for reference source investigation. As a result, the data amount (area) to be the reference source investigation target is reduced as compared with the case where all the old generation areas are set as the collection processing target. As a result, this technique can shorten the processing stop time for data in a single unnecessary data area collection process.
  • Non-Patent Document 1 since the technology disclosed in Non-Patent Document 1 is based on the assumption that a functional language is used as described above, the old generation data may refer to the new generation data that did not exist when the old generation data was generated. It can be applied only in a specific environment where no special event occurs. Updates other than deletion of data (Note that data deletion refers to a state in which the data is not referred to by specific data. That is, a new reference source is added to new generation or old generation data by deletion. This cannot be applied to a system using a language that generates an event that refers to the new generation data from the old generation data regardless of the data generation time.
  • the memory area for storing the old generation data is divided by generation, and the areas divided in the data generation order are the first generation, second generation,... Nth generation. Then, since the reference source of the Nth generation data can be limited to the data after the Nth generation, it can be said that the reference investigation range can be limited.
  • Non-Patent Document 2 if the data of the generation before the Nth generation is updated, the reference relationship is not completely investigated, and the survival data (along with the memory release process) is stored. There remains a problem of inadvertent deletion. That is, it can be said that it is insufficient to apply to a language in which data once generated is updated.
  • Non-Patent Documents 1 and 2 can only be applied to a system in which data stored in the past is not updated, and even if the number of generations is increased, a reference survey for each generation is performed. As such, it is not a fundamental solution to shorten the time of reference survey because it must be done regularly.
  • the first and second storage areas that allow change to held data and the third memory that makes change to held data impossible a control unit that executes access to data held in the second and third storage areas in response to a request from the program.
  • the control unit holds the second and third storage areas.
  • specific data for accessing data is set in the first storage area, the specific data includes reference information to the data held in the third storage area If the program accesses the data held in the third storage area during the process of moving the data having a reference relationship with the specific data to the second storage area, It is determined whether or not the data to be accessed has been moved to the second storage area.
  • the reference information included in the specific data is corrected to the destination data and accessed, and the third memory is stored.
  • This is a computer that corrects all references from specific data having a reference relationship with the data held in the area and releases the third storage area after correcting all the references.
  • the time flow which shows the relationship with the program execution in this embodiment, a release determination / data movement process, a reference destination correction process, and the block
  • the schematic diagram which shows the example of a storage area and a data reference relationship before execution of release determination and data movement processing in the present embodiment.
  • the schematic diagram which shows the example of a storage area and a data reference relationship immediately before execution of the block
  • Figure 1 shows the configuration of the computer system.
  • the computer system includes a CPU 102, a memory 103 as a main storage device, an external storage device 109 as an auxiliary storage device, an input device (not shown) that receives user operations, and a display device (not shown) that outputs various information.
  • the external storage device 109 may be provided in the computer system 101.
  • a Java VM (Virtual Machine) 105 is configured in cooperation with the program and the CPU 102 in order to provide an operating environment as a Java virtual machine.
  • the Java program 104 is, for example, at least one user application (AP) that can be executed by the Java VM 105.
  • Data for example, an object generated by executing the Java program 104 is first held in a temporary area 130 of the memory 103 or a closing waiting area 150 described later.
  • the temporary area 130 is a storage area that temporarily holds data generated and used by the Java program 104. Data generated by the execution of the Java program 104 is held in the temporary area 130 or the blocking waiting area 150. Data placement in the block waiting area is performed by a specific API (Application interface), and data in the temporary area that can be referred to from the data placed in the same area is also moved to the block waiting area 150 at the time of garbage collection. .
  • a specific API Application interface
  • the closed area 140 is a storage area in which the data held in the temporary area 130 can be moved at an arbitrary timing.
  • the closed area 140 is provided with two types of storage areas, that is, one or more closed waiting areas 150 and one or more closed areas 160.
  • the occlusion waiting area 150 is an area to which data from the temporary area 130 is moved, and is a storage area in which new data can be additionally stored or updated data can be overwritten.
  • the blocked area 160 is an area that is not a destination of the data stored in the temporary area 130 and the waiting-for-closure area 150, and is a storage area in which new data can not be added or stored data cannot be changed. is there.
  • the relationship between the blocking waiting area 150 and the blocked area 160 is such that the blocking waiting area 150 becomes the blocked area 160 when the usage amount of the blocking waiting area 150 reaches a predetermined amount.
  • the blocked area 160 is a storage area that can guarantee that the reference from the data held in the temporary area 130 does not change once it is closed.
  • the reference investigation area can be limited, and the thread of the Java program 104 can be limited at the time of garbage collection. There is an effect that the time to stop can be shortened.
  • the reference relationship with the temporary area 130 is lost means that the reference is explicitly deleted by executing the program or the data movement to the blocking waiting area 150 is completed as will be described later. Whether or not all the references to the temporary area 130 are actually lost can be determined at the time of garbage collection.
  • the blocked area 160 is an area that cannot be changed with respect to data held in itself, and can only be referred to. However, if a change occurs, the data to be changed is stored in the waiting area for blocking. The data can be changed by moving it to 150. More specifically, a copy-on-write method is applied in which the data is copied to the blocking waiting area 150 and the copied data is updated. As a result, the data changeable area and the impossible area can be set without affecting the programming by the user.
  • the Java program 104 has a closed area access data generation API.
  • the block area access data generation API designates a storage location of data generated by the Java program 104 by various declarations.
  • FIG. 2A shows a statement showing a specific example of the data generation API for the closed area.
  • a statement 201 is an API usage example for generating target data from class information.
  • the put method 202 of the closed area management class “Cache” is called, and “TargetClass” is taken as a data class to be created (hereinafter also referred to as “target class”) as an argument 203, and the closed area is used as a return value.
  • the specific data 204 (“TargetClass po”) generated by the access data generation unit 110 is returned.
  • the specific data 204 looks as if it is a target class similar to the class 203.
  • the statement 205 shown in FIG. 2B is an API usage example for moving existing data to the blockage waiting area 160.
  • the argument 203 of the put method 202 in the statement 201 becomes the existing data 206 (“TargetObject”) in the temporary area 130.
  • the specific data is generated in the temporary area 130
  • the target data generated based on the target class 203 is generated in the blocking waiting area 150
  • the target data is referred to from the specific data. It becomes the form to do.
  • the specific data and the target data have a one-to-one correspondence, and when accessing the target data 204 generated in the blockage waiting area 150, the specific data is in the temporary area 130.
  • the existing data in the temporary area 130 is moved to the blocking waiting area 150 and takes the same reference form.
  • FIG. 3 schematically shows the storage areas of the memory 103 described above, the arrangement of data, and the reference relationship.
  • specific data 311a, 311b, and 311c are arranged in the temporary area 130.
  • target data 322a, 322b, and 322c are arranged in the blocking waiting area 150.
  • target data 333a, 333b, 333c, and 333d are arranged in the closed area 160.
  • the specific data 311c refers to the target data 322a of the blocking waiting area 150 by reference 350, and the target data 332b and 332c also refer to the target data 322a by reference 351 and 352, respectively.
  • the specific data 311b or 311c refers to the target data 333b or 333c by the reference 353 or 354 of the closed area 160, respectively.
  • the target data 333a of the closed area 160 is referred to by the reference 355 from the target data 333a of the same closed area 160, and the target data 333d has no reference relationship with any data.
  • the Java VM 105 includes a blocked area access data generation unit 110, a release determination / data movement unit 111, and a blocked area release unit 113 as functional units.
  • the blocked area access data generation unit 110 is a functional unit that generates specific data 311 (a to c) indicating target data held in the blocking waiting area 150 and the blocked area 160.
  • specific data 311 a to c
  • the Java program 104 accesses the target data 322a in the blocking waiting area 150 or the target data 333b and 333c in the blocked area 160, the Java program 104 accesses through the specific data 311a to 311c, respectively.
  • the release determination / data movement unit 111 is a functional unit that selects a storage area to be released from the blocked area 160 of the blocked area 140 and performs a part of the “closed area release process”. Specifically, the release determination / data movement unit 111 uses various selection criteria, for example, when the area usage amount exceeds a preset threshold, every predetermined time, or after the completion of predetermined processing in the Java program 104. Based on this, the closed area 160 to be released is selected. Then, when there is a direct or indirect reference relationship from the data in all the non-release target areas to the data stored in the closed area 160 selected as the release target, the release determination / data movement unit 111 converts the data into It is moved (for example, copied) to the blocking waiting area 150.
  • various selection criteria for example, when the area usage amount exceeds a preset threshold, every predetermined time, or after the completion of predetermined processing in the Java program 104. Based on this, the closed area 160 to be released is selected. Then, when there is a direct or indirect
  • the reference destination correction unit 112 applies a blocking waiting area to data that has a reference relationship with the specific data held in the temporary area 113 before being moved to the blocking waiting area 150 by the release determination / data moving unit 111.
  • the function unit changes the reference to the moved data.
  • One of the features of this functional unit is that it is executed in parallel with the “blocked area releasing process”.
  • the blocked area releasing unit 113 releases the storage area when there is no reference from the data held in the non-release target area to the data held in the closed area 160 selected as the release target. It is a functional part to be executed.
  • the processing by the release determination / data movement unit 111, the reference destination correction unit 112, and the closed area release unit 113 is executed in parallel with the normal processing by the Java application 104.
  • Can raise things Conventionally, in order to release a storage area, it has been necessary to temporarily stop the processing of the Java program 104 in order to avoid the occurrence of a change in the data stored in the target storage area during the release process. .
  • the stop time of the Java application 104 can be reduced. There is an effect.
  • FIG. 4 shows a flow of “release determination / data movement processing” by the release determination / data movement unit 111.
  • the release determination / data movement unit 111 determines whether it is necessary to release the blocked area 140.
  • the determination criterion for example, a case where the memory usage exceeds a preset threshold value, or after a certain process in the Java program 104 is finished every predetermined time can be considered.
  • the release determination / data movement unit 111 selects a release target area from the blocked area 160 in S403.
  • the selection criteria include, for example, the order of low access frequency to a series of blocked areas 160, the order of time after generation, and data that is known not to be used after the end of certain processing in the Java program 104. It is conceivable to select a certain area until a desired release amount is reached.
  • the release determination / data movement unit 111 checks the reference to the blocked area 160 selected as the release target from all the areas that are not the release target, and all the data that can be directly and indirectly referred to the block waiting area 150. Move to finish the process.
  • the predetermined processing of the Java program 104 continues to operate in parallel even while a series of release processing is being executed, so that the data in the blocked region 160 that is the release target is not the release target region (for example, the temporary region 130). If the data is referred to, and the data is moved to the blocking waiting area 150, it is impossible to refer to the data in the area not to be released. More specifically, as described above, when accessing data in the blocked area 140 from the Java program 104, it is necessary to pass through the specific data arranged in the temporary area 130. If the target data exists in the blocked area 160, there is a possibility that the target data has been moved to the blocking waiting area 150 by the above-described data movement executed in parallel.
  • reference correction processing is performed to keep the reference destination from the specific data up-to-date.
  • FIG. 5 shows a flow of “reference destination correction processing” by the reference destination correction unit 112.
  • the reference destination correction unit 112 determines whether the data access from the Java program 104 is access through specific data. If the access is via specific data (S501: Yes), the process proceeds to S503.
  • the reference destination correcting unit 112 determines whether the target data that is the reference destination from the specific data is the blocked area 160 to be released. When the target data is the closed area 160 to be released (S503: Yes), the process proceeds to S505.
  • step S ⁇ b> 505 the reference destination correction unit 112 determines whether the target data has been moved to the blocking waiting area 150. If it has been moved (S505: Yes), the process proceeds to S507. In S507, the reference destination correcting unit 112 changes the reference destination from the specific data to the target data after movement.
  • the above reference correction processing is executed in parallel with the release determination / data movement processing, thereby preventing normal processing of the Java program 104 from stopping.
  • the release processing unit 113 executes the release process of the blocked area 160 when there is no reference to the blocked area 160 to be released.
  • FIG. 6 shows a flow of “closed area release processing” by the closed area release unit 113.
  • the blocked area releasing unit 113 checks whether or not there is an unexamined reference investigation for the specific data in the temporary area 130.
  • S601: Yes the process proceeds to S603
  • S601: No the process proceeds to S607.
  • the closed area release processing unit 113 selects one unexamined specific data, and determines whether or not the reference destination data from the specific data is held in the closed area 160 to be released.
  • the closed area 160 is marked (checked), and the process returns to S601.
  • the reference destination data is not held in the blocked area 160 (S603: No)
  • the process returns to S601.
  • the closed area 160 that is not marked is released, and the process ends.
  • the blocked area 160 that is not marked has no data reference held by the area from data held outside the area. This guarantees that there is no data required for execution of the Java program 104, and therefore means that the normal execution of the Java program 104 is not affected even if the entire area is released.
  • FIG. 7 schematically shows a flow of a series of processes when releasing the closed area 160.
  • the drawing shows, from left to right, the normal Java program 104 processing, specific data reference correction processing, release determination / data movement processing, and closed region 160 release processing are executed in time series.
  • the “release determination / data movement process (FIG. 4)” is executed. Specifically, the release determination / data movement processing unit 111 determines whether or not the closed area 140 needs to be released (S401), selects the closed area 160 to be released (S403), and sets the selected release target area. A reference investigation for the held data from the data held in the non-release target area and a process of moving the referenced data to the block waiting area 150 are performed (S405).
  • the “reference destination correction process” for the specific data is executed. Specifically, it is determined whether or not the data access from the Java program 104 is access via specific data (S501). If the data access is access via specific data, the target data is the blocked area 160 to be released. (S503), if it is held in the release target area, it is determined whether the target data has been moved to the blocking waiting area 150 (S505). The reference destination from the data is changed to the target data after movement (S507).
  • the blocked area releasing unit 113 executes the “blocked area releasing process”. In parallel with this, the Java program 104 enters a state in which normal program execution is executed in parallel.
  • the reference destination correction processing from the specific data shown in S501 to S507 is performed in accordance with the execution of the Java program 104, and therefore it is expected that specific data that is not accessed will appear depending on the degree of progress of the program. . If such specific data exists, the blocked area release processing in S601 to 607 may be delayed and may not be released. In such a case, at any time after the end of the data movement process in S405, all threads that execute the Java program 104 are temporarily stopped, and the reference destination correction process from the specific data is forcibly executed. Good.
  • FIG. 8A shows a memory image at time 701
  • FIG. 8B shows a memory image at time 702.
  • specific data 311a, 311b, and 311c are arranged in the temporary area 130.
  • the target data corresponding to each is 322a, 333b, and 333c.
  • 333b and 333c are directly referred to by the reference data 353b and 311c by reference 353 and reference 354, and 333a is indirectly referenced.
  • the data 333b, 333c, and 333a are moved (copied) to the blocking waiting area 150 to become data 334b, 334c, and 334a.
  • references 353, 354, and 355 are also changed to references 370, 380, and 390. Thereafter, the closed area 160 is released.
  • One of the features of this embodiment is that an area that holds only data that does not have such a reference in the storage area while making it possible to refer to data necessary for normal execution of the Java program 104, that is, data having a reference relationship. (For example, the closed area 160 to be released) can be secured. With this configuration, it is possible to limit the scope of the reference survey and to reduce the time required for the reference survey.
  • the Java program 104 has access to the data being moved while consolidating the reference-related data in a specific storage area (for example, the blocking waiting area 150).
  • a specific storage area for example, the blocking waiting area 150.
  • the reference destination correction process for the data is executed in parallel, so that it is not necessary to provide a separate processing time for the reference correction, and the normal execution of the Java program 104 needs to be stopped. It has the effect of disappearing.
  • various programs described in this embodiment can be partly or wholly stored in an electronic / electromagnetic and / or optical recording medium and installed in a computer, or can be installed in a wired or wireless manner such as the Internet. It is also possible to download via a communication network.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

データの参照関係を管理可能な計算機で、参照関係の調査時間を短縮する。 保持データへの変更が可能な第1並びに第2記憶領域、保持データへの変更が不可能な第3記憶領域及びプログラムからの要求により第2並びに第3記憶領域が保持するデータへのアクセスを実行する制御部を有する計算機である。計算機は、第2及び第3記憶領域に保持するデータにアクセスする為の特定データを第1記憶領域に設定する。計算機は、第3記憶領域が保持するデータの内、特定データと参照関係のあるデータを第2記憶領域に移動する。その処理の実行中に、プログラムから、第3記憶領域が保持するデータに対してアクセスがあると、そのデータが第2記憶領域に移動済みかを判定し、移動済みの場合、特定データの参照情報を移動先のデータに補正してアクセスする。それと共に特定データから参照される第3記憶領域のデータの参照を全て補正して第3記憶領域を解放する。

Description

計算機、プログラム及びメモリ管理方法
本発明は、計算機、プログラム及びメモリ管理方法に係り、特に、データ参照関係を管理する計算機、プログラム及びメモリ管理方法に関する。
 計算機がデータ間の参照関係を調査する際、一般にデータに対する処理を停止する技術が用いられる。このようなデータ参照関係の調査は、例えば、データの要不要を自動的に管理するガベージコレクションで用いられており、Java(登録商標)仮想マシンで利用されるガベージコレクタでは、この仮想マシン上で動作するアプリケーション(以後、「AP」もしくは「プログラム」と称する。)の動作を完全に止めるStop-the-World方式が用いられることが多い。
 このように、データ参照関係調査においてデータに対する処理を停止するのは、参照調査中にデータ更新や削除によって、参照関係が書き換えられるのを防ぐためであり、Javaのガベージコレクタのように、本方式を用いてデータ間参照関係を調査するものが多い。参照関係調査時間が増大するとプログラム実行(データに対する処理)の停止時間も長くなり、処理の遅延が発生する。
 本問題への対策として考えられるのが、調査範囲の限定である。非特許文献1は、関数型言語のようなデータ更新の無いシステムに対する参照調査領域を限定する技術を開示する。この技術は、まずデータを生成した順番で、旧世代のデータを格納する領域と、新世代のデータを格納する領域とにメモリ領域を分けるようになっている。そして、新世代のデータを格納する領域を対象とした不要領域の回収処理を優先的に実行することで、一定量の領域を回収するのに必要な不要データ回収処理の回数を低減するようになっている。その結果、この技術は、プリケーション等の処理の停止時間を削減できる。
 また、非特許文献2は世代別ガベージコレクションでの世代数を増大させることによる参照調査領域を限定する技術を開示する。この技術は、不要データを格納するメモリ領域の回収処理時には、世代別に分割した領域の1つのみを参照元調査の対象とする。これにより、旧世代の領域全てを回収処理対象にするのに比べ、参照元調査対象となるデータ量(領域)が減少する。その結果、この技術は、1回の不要データ領域の回収処理におけるデータに対する処理の停止時間を短くすることができる。
Todd A. Anderson, Optimizations in a Private Nursery-based Garbage Collector, In Proceedings of the 2010 international symposium on Memory management, pp.21-30, 2010 Richard L. Hudson, Incremental collection of mature objects, In Proceedings of the International Workshop on Memory Management, pp.388-403, 1992
 しかしながら、非特許文献1が開示する技術は、上述のように関数型言語を前提としていることから、旧世代のデータ生成時に存在しなかった新世代のデータを、その旧世代データが参照するような事象が発生しないという特定の環境下でのみ適用できるものである。データについて削除以外の更新(なお、ここでデータの削除とは、特定のデータから参照されない状態とすることをいう。即ち削除により新世代又は旧世代のデータに新しく参照元が追加されることはない。)が発生し、データの生成時に関係なく、旧世代のデータから新世代のデータを参照するような事象を発生させる言語を用いたシステムには適用することができない。このような旧世代のデータから新世代のデータを参照する言語を用いたシステムにおいて、旧世代に属するデータの参照元を調査するには、新世代と旧世代を含めた全領域を調査対象とする必要があり、参照調査範囲を新世代に属するデータに限定することができない。
 また、非特許文献2に開示されるように、旧世代のデータを格納するメモリ領域を世代別に分割し、データの生成順に分割した領域を第1世代、第2世代、・・・第N世代とすれば、第N世代のデータの参照元は第N世代以降のデータに限定できることから、参照調査範囲を限定することができるとも言える。
 しかしながら、非特許文献2であっても、第N世代よりも前の世代のデータに更新が発生した場合には、参照関係の調査対象が完全ではなく、(メモリの解放処理とともに)生存データを不用意に削除してしまうという課題が残る。即ち一度生成したデータの更新が発生する言語に適用するには不十分であるといえる。
 このように、非特許文献1及び2に開示された技術は、従前に格納されたデータに更新が発生し無いシステムでないと適用できない点と、世代数を増大させても、各世代の参照調査自体は定期的に行わなければならない点から、参照調査の時間を短縮するための根本的な解決策にはなっていない。
 上記課題を解決するために、例えば、本発明の一態様は、保持するデータへの変更を可能とする第1及び第2記憶領域と、保持するデータへの変更を不可能とする第3記憶領域と、プログラムからの要求により、第2及び第3記憶領域が保持するデータに対するアクセスを実行する制御部と、を有する計算機であって、制御部は、第2及び第3記憶領域に保持するデータにアクセスする為の特定データを第1記憶領域に設定し、特定データに第3記憶領域が保持するデータへの参照情報を含ませ、解放対象である第3記憶領域が保持するデータのうち、特定データと参照関係のあるデータを第2記憶領域に移動する処理の実行中に、プログラムから、第3記憶領域が保持するデータに対する特定データを介したアクセスが発生した場合、アクセス対象であるデータが第2記憶領域に移動済みか否かを判定し、移動していた場合は、該特定データに含まれる参照情報を移動先のデータに補正してアクセスすると共に第3記憶領域が保持するデータに参照関係を有する特定データからの参照を全て補正し、参照を全て補正した後に第3記憶領域を解放する計算機である。
 本発明の一態様によれば、データ格納領域の解放に伴うプログラム(例えば、アプリケーション等)の停止時間を短縮することができる。
本発明の適用した一実施形態の構成を示すブロック図。 閉塞領域用データ生成APIの一例を示す模式図。 閉塞領域用データ生成APIの一例を示す模式図。 本実施形態における記憶領域とデータ参照の関係例を示す模式図。 本実施形態における解放判定・データ移動処理の例を示すフロー図。 本実施形態における参照先補正処理の例を示すフロー図。 本実施形態における閉塞済み領域解放処理の例を示すフロー図。 本実施形態におけるプログラム実行、解放判定・データ移動処理、参照先補正処理及び閉塞済み領域解放処理との関係を時系列で示すタイムフロー。 本実施形態における、解放判定・データ移動処理実行前における、記憶領域とデータ参照関係の例を示す模式図。 本実施形態における、閉塞済み領域解放処理実行直前における、記憶領域とデータ参照関係の例を示す模式図。
 以下、本発明を適用した一実施の形態について図面を用いて説明する。なお、本実施形態は、Java仮想マシンを前提とした計算機システムに対して本発明を適用した例について説明するが、本発明はこれに限ったものではなく、ガベージコレクションのようなメモリ管理を自動化する機構を有する他のシステムにも有効なものである。
 図1に、計算機システムの構成を示す。計算機システムは、CPU102、主記憶装置としてのメモリ103、補助記憶装置としての外部記憶装置109及びユーザ操作を受け付ける入力装置(不図示)並びに種々の情報を出力する表示装置(不図示)を有するサーバ装置である。なお、外部記憶装置109は、計算機システム101内に設けられてもよい。
 計算機システムは、Java仮想マシンとしての動作環境を提供するために、プログラムと、CPU102との協働により、JavaVM(Virtual Machine)105が構成される。Javaプログラム104は、例えば、JavaVM105で実行可能な少なくとも1つのユーザアプリケーション(AP)等である。Javaプログラム104の実行により生成されたデータ(例えば、オブジェクト)は、先ず、メモリ103の一時領域130若しくは後述する閉塞待ち領域150に保持される。
 本実施形態における計算機システムの特徴の一つは、データの記憶領域の構成にある。計算システムのメモリ103上には、データの記憶領域として、一時領域130と、閉塞領域140とが設けられるようになっている。一時領域130はJavaプログラム104が生成・使用するデータを一時的に保持する記憶領域である。Javaプログラム104の実行により生成されたデータは、一時領域130若しくは閉塞待ち領域150に保持するようになっている。閉塞待ち領域へのデータ配置は、特定API(Application interface)によって実施され、同領域に配置されたデータから参照可能な一時領域内データもガベージコレクション時に閉塞待ち領域150に移動するようになっている。
 閉塞領域140は、一時領域130に保持されたデータを任意の契機で移動することが可能な記憶領域である。閉塞領域140には、1以上の閉塞待ち領域150及び1以上の閉塞済み領域160という2種類の記憶領域が設けられる。
 閉塞待ち領域150は、一時領域130からのデータの移動先となる領域であり、新規なデータの追加記憶や更新されたデータの上書き等を行うことができる記憶領域である。 閉塞済み領域160は、一時領域130及び閉塞待ち領域150に格納されたデータの移動先とならない領域であり、新規データの追加記憶や保持するデータに上書き等の変更を加えることができない記憶領域である。閉塞待ち領域150と閉塞済み領域160の関係は、閉塞待ち領域150の使用量が所定の量に達したときに、その閉塞待ち領域150が、閉塞済み領域160になる関係にある。即ち閉塞済み領域160は、一度閉塞済みとなると、一時領域130に保持されたデータからの参照に変更が発生しないことが保障できる記憶領域である。
 よって、ガーベッジコレクションの際、一時領域130との参照関係調査時に閉塞済み領域160内に格納されたデータを参照調査する必要がなくなり、参照調査領域を限定でき、ガーベッジコレクション時にJavaプログラム104のスレッドが停止する時間を短縮することができるという効果がある。
 なお、「一時領域130との参照関係が無くなる」というのは、プログラム実行によって参照が明示的に削除されるか、後述するように、閉塞待ち領域150へのデータ移動が完了することを表す。実際に一時領域130への参照が全てなくなったかどうかは、ガベージコレクション時に判断可能である。
 なお、閉塞済み領域160は、それ自体に保持されたデータに対して変更はできずに参照のみを可能とする領域であるが、仮に変更が生ずる場合には、変更対象のデータを閉塞待ち領域150に移動させることで当該データの変更を可能とするようになっている。より具体的には、当該データを閉塞待ち領域150にコピーし、コピーしたデータに対して更新処理を行うCopy on Write方式を適用するようになっている。これにより、ユーザによるプログラミングには影響なく、データ変更可能領域と不可能領域を設定することが可能となる。
 Javaプログラム104は、閉塞領域アクセスデータ生成APIを有する。閉塞領域アクセスデータ生成APIは、種々の宣言によって、Javaプログラム104が生成したデータの格納先を指定する。
 図2Aに、閉塞領域用データ生成APIの具体例を示すステートメントを示す。ステートメント201は、クラス情報から目的データを生成するAPI利用例である。閉塞領域管理用クラス“Cache”のputメソッド202を呼び出し、引数203には作成したいデータのクラス(以下、「目的クラス」という場合がある。)として“TargetClass”を取り、返り値として、閉塞領域アクセスデータ生成部110で生成された特定データ204(“TargetClas po”)を返す。本特定データ204は、クラス203と同様の目的クラスであるかのように見える。
 図2Bに示すステートメント205は、既存のデータを閉塞待ち領域160に移動させるAPI利用例である。この場合、ステートメント201におけるputメソッド202の引数203が、一時領域130内の既存データ206(“TargetObject”)となる。
 特定データ及び目的データのメモリ103上での配置は、特定データは一時領域130内、目的クラス203を元に生成した目的データは、閉塞待ち領域150内に生成され、特定データから目的データを参照する形となる。なお、特定データと目的データは1対1に対応しており、閉塞待ち領域150に生成された目的データ204にアクセスする際は、一時領域130内の特定データ201を介するものとする。
  なお、ステートメント205の場合、一時領域130内の既存データが閉塞待ち領域150に移動させられ、同様の参照形態をとるようになる。
 図3に、以上説明したメモリ103の各記憶領域と、データの配置及び参照関係とを模式的示す。一時領域130には、特定データ311a、311b及び311cが配置される。閉塞待ち領域150には、目的データ322a、322b及び322cが配置される。閉塞済み領域160には、目的データ333a、333b、333c及び333dが配置される。
 特定データ311cは、参照350によって閉塞待ち領域150の目的データ322a参照し、目的データ332b及び332cも、参照351及び352によって、それぞれ目的データ322aを参照する。
 特定データ311b又は311cは、閉塞済み領域160の参照353又は354によって、目的データ333b又は333cをそれぞれ参照する。閉塞済み領域160の目的データ333aは、参照355によって、同じ閉塞済み領域160の目的データ333aから参照され、目的データ333dは何れのデータとも参照関係に無い。
 図1に戻り、JavaVM105の構成について説明する。
  JavaVM105は、その機能部として、閉塞領域アクセスデータ生成部110と、解放判定・データ移動部111と、閉塞済み領域解放部113とを有する。
 閉塞領域アクセスデータ生成部110は、閉塞待ち領域150及び閉塞済み領域160に保持する目的データを指す特定データ311(a~c)を生成する機能部である。Javaプログラム104が、閉塞待ち領域150の目的データ322a又は閉塞済み領域160の目的データ333b並びに333cにアクセスする場合、それぞれ特定データ311a~cを介してアクセスするようになっている。
 解放判定・データ移動部111は、閉塞領域140の閉塞済み領域160から、解放対象とする記憶領域を選択して、「閉塞済み領域解放処理」の一部を担う機能部である。具体的には、解放判定・データ移動部111は、例えば、領域使用量が予め設定した閾値を超えた場合や、所定時間毎或いはJavaプログラム104における所定の処理の終了後といった種々の選択基準に基づいて、解放対象とする閉塞済み領域160を選択するようになっている。そして、解放判定・データ移動部111は、全解放対象外領域のデータから、解放対象として選択した閉塞済み領域160に格納されたデータに対する直接的又は間接的な参照関係がある場合、そのデータを閉塞待ち領域150に移動(例えば、コピー)する様になっている。
 参照先補正部112は、解放判定・データ移動部111によって、閉塞待ち領域150に移動される前に、一時領域113に保持された特定データとの参照関係があったデータに対し、閉塞待ち領域150に移動後に、Javaプログラム104からアクセスが有った場合に、当該移動後のデータに対する参照を変更する機能部である。本機能部は、「閉塞済み領域解放処理」と並行して実行されることを特徴の一つとする。
 閉塞済み領域解放部113は、解放対象として選択された閉塞済み領域160に保持されるデータに対し、解放対象外領域に保持されるデータからの参照が無い事を契機に、記憶領域の解放を実行する機能部である。
 本実施形態の特徴の一つとして、上述の解放判定・データ移動部111、参照先補正部112及び閉塞済み領域解放部113による処理が、Javaアプリケーション104による通常の処理と並行して実行されることを上げることができる。従来、記憶領域を解放するには、解放処理中に、その対象となる記憶領域に記憶されたデータに対する変更の発生を回避するため、Javaプログラム104の処理を一時的に停止する必要があった。これに対し本実施形態では、解放処理に伴う参照関係調査や解放処理等をJavaプログラム104の通常の処理と並行して実行することができるため、Javaアプリケーション104の停止時間を低減することができるという効果がある。
 次に、以上の構成を有する計算機システム101の処理について、図4~6のフロー図を用いて説明する。
 図4に、解放判定・データ移動部111による「解放判定・データ移動処理」のフローを示す。
  S401で、解放判定・データ移動部111は、閉塞領域140の解放が必要かどうかを判断する。判断基準としては、例えば、メモリ使用量があらかじめ設定した閾値を超えた場合や、一定時間ごと、Javaプログラム104でのある処理終了後といったものが考えられる。
 解放が必要と判断された場合(S401:Yes)解放判定・データ移動部111は、S403で、閉塞済み領域160から解放対象領域を選択する。この選択基準としては、例えば、一連の閉塞済み領域160に対するアクセス頻度の低い順、生成されてからの時間順、Javaプログラム104でのある処理終了後は利用しないとわかっているデータが配置されている領域を、希望する解放量となるまで選択するといった方法が考えられる。
 S405で、解放判定・データ移動部111は、解放対象外の全領域から解放対象として選択した閉塞済み領域160への参照を調べ、直接及び間接的に参照可能なデータを全て閉塞待ち領域150に移動させ、処理を終了する。
 なお、一連の解放処理を実行中もJavaプログラム104の所定の処理は並行して動作し続けることから、解放対象である閉塞済み領域160のデータに解放対象外の領域(例えば、一時領域130)のデータから参照があり、そのデータを閉塞待ち領域150に移動してしまうと、当該解放対象外の領域のデータからの参照が不可能となる。より詳細には、前述のように、Javaプログラム104から閉塞領域140内のデータにアクセスする際、一時領域130内に配置された特定データを介する必要があるが、特定データから見える閉塞領域140内の目的データが、閉塞済み領域160に存在する場合、並行して実行される上述のデータ移動により閉塞待ち領域150に移動されている可能性がある。
 そこで、図4の解放判定・データ移動部111の処理と並行して、特定データからの参照先を最新に保つようにする参照補正処理を行う。
 図5に、参照先補正部112による「参照先補正処理」のフローを示す。
  S501で、参照先補正部112は、Javaプログラム104からのデータアクセスが、特定データを介したアクセスかどうかを判定する。特定データを介したアクセスである場合(S501:Yes)、S503に進む。
 S503で、参照先補正部112は、特定データからの参照先である目的データが解放対象の閉塞済み領域160か否かを判定する。目的データが解放対象の閉塞済み領域160である場合(S503:Yes)、S505に進む。
 S505で、参照先補正部112は、目的データが閉塞待ち領域150に移動済みか否かを判断する。移動済みであった場合(S505:Yes)、S507に進む。
  S507で、参照先補正部112は、当該特定データからの参照先を移動後の目的データに変更する。
 以上の参照補正処理が、解放判定・データ移動処理と並列して実行されることで、Javaプログラム104の通常の処理が停止することを防止する。
 参照補正処理の実行により、解放対象の閉塞済み領域160への参照が無くなると、解放処理部113が、閉塞済み領域160の解放処理を実行する。
 図6に、閉塞済み領域解放部113による、「閉塞済み領域解放処理」のフローを示す。
  S601で、閉塞済み領域解放部113は、一時領域130の特定データについて、参照調査が未調査のものがあるか否かをチェックする。未調査の特定データが有る場合(S601:Yes)、S603に進み、無い場合(S601:No)は、S607の処理に進む。
 S603で、閉塞済み領域解放処理部113は、未調査の特定データを一つ選択し、当該特定データからの参照先データが解放対象の閉塞済み領域160に保持されているか否かを判断する。解放対象の閉塞済み領域160への参照を保持していた場合(S603:Yes)は、当該閉塞済み領域160に印をつけ(チェックし)、S601に戻る。参照先データが閉塞済み領域160に保持されていない場合(S603:No)、S601に戻る。
 この処理を全特定データに対して実施した後(S601:No)、S605において、印のついていない閉塞済み領域160を解放し、処理を終了する。
  印がついていない閉塞済み領域160には、当該領域外に保持されたデータから当該領域が保持するデータ参照が全くない。このことは、Javaプログラム104の実行で必要なデータが存在しないことを保障することから、領域全域を解放してもJavaプログラム104の通常の実行に何ら影響を与えないことを意味する。
 以上の図4~図6の処理を、模式図を用いて纏める。図7に、閉塞済み領域160を解放する際の一連の処理の流れを模式的に示す。同図は左から右に通常のJavaプログラム104の処理、特定データ参照の補正処理、解放判定・データ移動処理及び閉塞済み領域160の開放処理が時系列で実行される様を示す。
 時刻701において、Javaプログラム104と並行して、「解放判定・データ移動処理(図4)」が実行される。具体的には、解放判定・データ移動処理部111が、閉塞領域140の解放要否を判断し(S401)、解放対象とする閉塞済み領域160を選択し(S403)、選択した解放対象領域に保持されたデータに対する解放対象外領域に保持されたデータからの参照調査及び被参照データを閉塞待ち領域150に移動する処理を行う(S405)。
 「解放判定・データ移動処理」に並行して、特定データの「参照先補正処理」が実行される。具体的には、Javaプログラム104からのデータアクセスが、特定データを介したアクセスかどうかを判定し(S501)、特定データを介したアクセスである場合は、目的データが解放対象の閉塞済み領域160に保持されているか否かを判断し(S503)、解放対象領域に保持されている場合、その目的データが閉塞待ち領域150に移動済みか否か判断し(S505)、移動済みの場合、特定データからの参照先を移動後の目的データに変更する(S507)。
 時刻702において、閉塞済み領域解放部113が、「閉塞済み領域解放処理」を実行する。これに並行して、Javaプログラム104は、通常のプログラム実行を並列実行する状態となる。
 なお、S501~507に示す特定データからの参照先補正処理は、Javaプログラム104の実行に伴って実施されるため、プログラムの進行度合いによっては、アクセスされない特定データが出てくることも予想される。このような特定データが存在すると、S601~607における閉塞済み領域解放処理が滞り、解放されない状況となることも考えられる。このような場合、S405におけるデータ移動処理の終了後の任意の時点で、Javaプログラム104を実行する全スレッドを一時停止させ、特定データからの参照先補正処理を強制的に実施するようにしてもよい。
 また、他の構成としては、Javaプログラム104を実行するスレッド群に対して特定データをスレッドローカルデータとして管理することにより、解放対象領域への参照を保持する特定データを持つスレッドのみを停止させるようにしてもよい。この場合、特定データからの参照先補正処理を強制的に実施する際においても、全てのスレッドを停止させる必要がないという効果が得られる。
 最後に、図7の時刻701(解放処理前)と、時刻702(閉塞済み領域160の解放直前)との時点における、データの記憶領域と参照の関係を説明する。図8Aに、時刻701のメモリイメージを示し、図8Bに、時刻702のメモリイメージを示す。
 図8Aにおいて、一時領域130には、特定データ311a、311b及び311c配置されている。それぞれに対応する目的データは322a、333b及び333cである。
  閉塞済み領域160に保持されたデータのうち、333b及び333cは、参照353及び参照354によって、特定データ311b及び311cに直接的に参照されており、333aは、間接的に参照されている。
 よって、図8Bに示すように、データ333b、333c及び333aは、閉塞待ち領域150に移動(コピー)され、データ334b、334c及び334aとなる。
  参照先補正処理では、参照353、354、355も、新たに参照370、380、390に変更される。その後、閉塞済み領域160は、解放される。
 本実施形態の特徴の一つは、Javaプログラム104の通常の実行に必要なデータ、即ち参照関係のあるデータを参照可能にしつつ、記憶領域内にそのような参照がないデータのみを保持する領域(例えば、解放対象の閉塞済み領域160)を確保できる点にある。この構成により、参照調査の範囲を限定することができ、参照調査に要する時間を低減できるという効果がある。
 また、本実施形態の他の特徴の一つは、参照関係のあるデータを特定の記憶領域(例えば、閉塞待ち領域150に集約しつつその移動中のデータにJavaプログラム104からのアクセスが有った場合に、当該データに対する参照先補正処理を並行して実行する点にある。これにより、参照補正のための処理時間を別に設ける必要がなくなり、Javaプログラム104の通常の実行を停止する必要がなくなるという効果がある。
 なお、本発明は上記種々の構成に限定されるものではなく、その趣旨を変更しない範囲で当業者であれば想到するであろう種々の構成を適用することがきる。特に、本実施形態では、プログラムとの協働により各機能部を構成する例を説明したが、これら一部をハードウェア処理とすることも可能である。
 更に、本実施形態で説明した種々のプログラムは、その一部又は全部を電子・電磁式及び又は光学式記録媒体に格納してコンピュータにインストールことも可能であるし、インターネット等の有線又は無線の通信網を介してダウンロードすることも可能である。
101    計算機システム
104    Javaプログラム
105    JavaVM
110    閉塞領域アクセスデータ生成部
111    解放判定・データ移動部
112    参照先補正部
113    閉塞済み領域解放部
130    一時領域
140    閉塞領域
150    閉塞待ち領域
160    閉塞済み領域

Claims (10)

  1.  保持するデータへの変更を可能とする第1及び第2記憶領域と、保持するデータへの変更を不可能とする第3記憶領域と、プログラムからの要求により、前記第2及び第3記憶領域が保持するデータに対するアクセスを実行する制御部と、を有する計算機であって、 前記制御部は、
     前記第2及び第3記憶領域に保持するデータにアクセスする為の特定データを前記第1記憶領域に生成し、
     前記特定データに第3記憶領域が保持するデータへの参照情報を含ませ、
     解放対象である前記第3記憶領域が保持するデータのうち、前記特定データと参照関係のあるデータを前記第2記憶領域に移動する処理の実行中に、前記プログラムから、前記第3記憶領域が保持するデータに対する特定データを介したアクセスが発生した場合、アクセス対象であるデータが前記第2記憶領域に移動済みか否かを判定し、
     移動していた場合は、該特定データに含まれる参照情報を移動先のデータに補正してアクセスすると共に前記第3記憶領域が保持するデータに参照関係を有する特定データからの参照を全て補正し、
     前記参照を全て補正した後に、前記第3記憶領域を解放する
    ことを特徴とする計算機。
  2.  請求項1に記載の計算機であって、
     前記制御部は、
     前記特定データと参照関係のある前記第3記憶領域が保持するデータの前記第2記憶領域への移動及び前記アクセスが発生したデータに対する参照の補正を、前記プログラムの通常の処理と並行して実行する
    ことを特徴とする計算機。
  3.  請求項1又は2に記載の計算機であって、
     前記制御部は、
     前記第3記憶領域が保持するデータと参照関係がある前記特定データの参照がすべて補正される前に該第3記憶領域を解放する場合、前記第3記憶領域が保持するデータに対する前記プログラムからのアクセスを停止し、
     前記第3記憶領域が保持するデータと参照関係を持つ特定データからの参照を補正することを特徴とする計算機。
  4.  請求項3に記載の計算機であって、
     前記制御部は、
     特定データをスレッドローカルデータとし、該スレッドローカルデータを扱うスレッドのデータ操作処理のみを停止し、前記参照を補正する
    ことを特徴とする計算機。
  5.  請求項1~4の何れか一項に記載の計算機であって、
     前記制御部は、
     前記特定データと参照関係にある前記第3記憶領域が保持するデータへの参照調査及び調査によって参照関係が検出された該データの前記第2記憶領域への移動を、当該データへのアクセス要求を行ったプログラムによって実行し、
     前記参照関係のある全てのデータを前記第2記憶領域に移動後、前記第3記憶領域を解放する
    ことを特徴とする計算機。
  6.  保持するデータへの変更を可能とする第1及び第2記憶領域と、保持するデータへの変更を不可能とする第3記憶領域と、プログラムからの要求により、前記第2及び第3記憶領域が保持するデータに対するアクセスを実行する制御部と、を有する計算機に、
     前記第2及び第3記憶領域に保持するデータにアクセスする為の特定データを前記第1記憶領域に設定する手順と、
     前記特定データに第3記憶領域が保持するデータへの参照情報を含ませる手順と、
     解放対象である前記第3記憶領域が保持するデータのうち、前記特定データと参照関係のあるデータを前記第2記憶領域に移動する手順と、
     前記移動させる手順の実行中に、前記プログラムから、前記第3記憶領域が保持するデータに対する特定データを介したアクセスが発生した場合、アクセス対象であるデータが前記第2記憶領域に移動済みか否かを判定する手順と、
     移動済みの場合に、該特定データに含まれる参照情報を移動先のデータに補正してアクセスすると共に前記第3記憶領域が保持するデータに参照関係を有する特定データからの参照を全て補正する手順と、
     前記参照を全て補正した後に、前記第3記憶領域を解放する手順と、
    を実行させるプログラム。
  7.  請求項6に記載のプログラムであって、
     前記特定データと参照関係のある前記第3記憶領域が保持するデータを前記第2記憶領域に移動する手順及び前記アクセスが発生したデータの参照を補正する手順を、前記プログラムの通常の処理と並行して実行させる
    ことを特徴とするプログラム。
  8.  請求項6又は7に記載のプログラムであって、
     前記第3記憶領域が保持するデータと参照関係がある前記特定データの参照がすべて補正される前に該第3記憶領域を解放する場合、前記第3記憶領域が保持するデータに対する前記プログラムからのアクセスを停止する手順と、
     前記第3記憶領域が保持するデータと参照関係を持つ特定データからの参照を補正する手順と
    を実行させることを特徴とするプログラム。
  9.  請求項8に記載のプログラムであって、
     前記特定データをスレッドローカルデータとする手順と、
     該スレッドローカルデータを扱うプログラムのデータ操作処理のみを停止する手順と、 前記参照を補正する手順と
    を実行させることを特徴とするプログラム。
  10.  保持するデータへの変更を可能とする第1及び第2記憶領域と、保持するデータへの変更を不可能とする第3記憶領域と、プログラムからの要求により、前記第2及び第3記憶領域が保持するデータに対するアクセスを実行する制御部と、を有する計算機のメモリ管理方法であって、
     前記制御部が、
     前記第2及び第3記憶領域に保持するデータにアクセスする為の特定データを前記第1記憶領域に設定し、
     前記特定データに第3記憶領域が保持するデータへの参照情報を含ませ、
     解放対象である前記第3記憶領域が保持するデータのうち、前記特定データと参照関係のあるデータを前記第2記憶領域に移動する処理の実行中に、前記プログラムから、前記第3記憶領域が保持するデータに対する特定データを介したアクセスが発生した場合、アクセス対象であるデータが前記第2記憶領域に移動済みか否かを判定し、
     移動していた場合は、該特定データに含まれる参照情報を移動先のデータに補正してアクセスすると共に前記第3記憶領域が保持するデータに参照関係を有する特定データからの参照を全て補正し、
     前記参照を全て補正した後に、前記第3記憶領域を解放する
    ことを含むメモリ管理方法。
PCT/JP2012/001432 2012-03-02 2012-03-02 計算機、プログラム及びメモリ管理方法 WO2013128492A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US14/359,325 US20140337597A1 (en) 2012-03-02 2012-03-02 Computer, program, and memory management method
PCT/JP2012/001432 WO2013128492A1 (ja) 2012-03-02 2012-03-02 計算機、プログラム及びメモリ管理方法
JP2014501826A JP5657169B2 (ja) 2012-03-02 2012-03-02 計算機、プログラム及びメモリ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/001432 WO2013128492A1 (ja) 2012-03-02 2012-03-02 計算機、プログラム及びメモリ管理方法

Publications (1)

Publication Number Publication Date
WO2013128492A1 true WO2013128492A1 (ja) 2013-09-06

Family

ID=49081759

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/001432 WO2013128492A1 (ja) 2012-03-02 2012-03-02 計算機、プログラム及びメモリ管理方法

Country Status (3)

Country Link
US (1) US20140337597A1 (ja)
JP (1) JP5657169B2 (ja)
WO (1) WO2013128492A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011027626A1 (ja) * 2009-09-01 2011-03-10 株式会社日立製作所 メモリ管理方法、計算機システム及びコンピュータ可読媒体
WO2011104889A1 (ja) * 2010-02-25 2011-09-01 株式会社日立製作所 計算機システム、メモリ管理方法及びメモリ管理プログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3939975B2 (ja) * 2001-12-14 2007-07-04 松下電器産業株式会社 ガベージコレクション装置、ガベージコレクション方法及びガベージコレクションプログラム
US7165160B2 (en) * 2004-09-08 2007-01-16 Hitachi, Ltd. Computing system with memory mirroring and snapshot reliability
JP5031470B2 (ja) * 2007-07-19 2012-09-19 株式会社日立製作所 メモリ管理方法、情報処理装置及びメモリ管理プログラム
JP5064134B2 (ja) * 2007-08-03 2012-10-31 株式会社日立製作所 メモリ管理方法およびその方法を用いるコンピュータ
JP5153539B2 (ja) * 2008-09-22 2013-02-27 株式会社日立製作所 メモリ管理方法およびその方法を用いるコンピュータ
JP5281452B2 (ja) * 2009-03-25 2013-09-04 株式会社日立製作所 メモリ管理方法、コンピュータ、及び、メモリ管理プログラム
US9223793B1 (en) * 2009-06-03 2015-12-29 American Megatrends, Inc. De-duplication of files for continuous data protection with remote storage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011027626A1 (ja) * 2009-09-01 2011-03-10 株式会社日立製作所 メモリ管理方法、計算機システム及びコンピュータ可読媒体
WO2011104889A1 (ja) * 2010-02-25 2011-09-01 株式会社日立製作所 計算機システム、メモリ管理方法及びメモリ管理プログラム

Also Published As

Publication number Publication date
US20140337597A1 (en) 2014-11-13
JP5657169B2 (ja) 2015-01-21
JPWO2013128492A1 (ja) 2015-07-30

Similar Documents

Publication Publication Date Title
US8612493B2 (en) Allocation cache premarking for snap-shot-at-the-beginning concurrent mark-and-sweep collector
Joshi et al. Dhtm: Durable hardware transactional memory
EP1805630B1 (en) Cache eviction
US20220276991A1 (en) Database lock management with cache-optimized hash table
US10013326B2 (en) Propagating a prefetching profile bit from a prefetch queue to a data cache to indicate that a line was prefetched in response to an instruction within a code region
KR101677900B1 (ko) 데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법
US20120005684A1 (en) Priority rollback protocol
US9355029B2 (en) Thread-based memory management with garbage collection
US8495107B2 (en) System and method for use with garbage collected languages for enabling the allocated heap memory to be updated at runtime
US20140059093A1 (en) Information processing method and apparatus for garbage collection
US9411638B2 (en) Application startup page fault management in a hardware multithreading environment
JP2012198657A (ja) 命令処理方法、命令処理装置、及び命令処理プログラム
WO2011027626A1 (ja) メモリ管理方法、計算機システム及びコンピュータ可読媒体
US8806138B1 (en) Dynamic dependencies and parameterizations for execution and caching
US9740597B2 (en) Transactional execution of native methods
CN104750637A (zh) 用于加速器的可扩展输入/输出数据机制
US11775527B2 (en) Storing derived summaries on persistent memory of a storage device
JP2008003882A (ja) コンパイラプログラム,リストベクトルの領域割当て最適化方法,コンパイル処理装置およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体
JP5657169B2 (ja) 計算機、プログラム及びメモリ管理方法
JP2019530074A (ja) 処理回路による命令実行を示すトレースストリームを生成し処理するための装置および方法
US20080313623A1 (en) Changing metadata without invalidating cursors
Zhou et al. Efficient atomic durability on eadr-enabled persistent memory
US8589621B2 (en) Object persistency
JP2017142670A (ja) メモリ管理装置およびメモリ管理方法
Han et al. SyncGC: a synchronized garbage collection technique for reducing tail latency in Cassandra

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12869642

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014501826

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14359325

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12869642

Country of ref document: EP

Kind code of ref document: A1