JP2003241967A - Program execution device, its method and program executed therein - Google Patents
Program execution device, its method and program executed thereinInfo
- Publication number
- JP2003241967A JP2003241967A JP2002038533A JP2002038533A JP2003241967A JP 2003241967 A JP2003241967 A JP 2003241967A JP 2002038533 A JP2002038533 A JP 2002038533A JP 2002038533 A JP2002038533 A JP 2002038533A JP 2003241967 A JP2003241967 A JP 2003241967A
- Authority
- JP
- Japan
- Prior art keywords
- memory allocation
- memory
- class file
- allocation operation
- execution
- 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.)
- Withdrawn
Links
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は、オブジェクト指向
言語によるクラスファイルを実行するプログラム実行装
置およびその方法、並びにそこで実行されるプログラム
に関し、より特定的には、上記クラスファイル実行時に
動的なメモリ領域の割り当てを支援する技術に関する。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a program execution device and method for executing a class file in an object-oriented language, and a program executed therein. More specifically, the present invention relates to a dynamic memory for executing the class file. A technique for supporting allocation of a region.
【0002】[0002]
【従来の技術】近年、ソフトウエアの巨大化に伴い、プ
ログラムの再利用性、拡張性、および生産性に優れたプ
ログラム言語に注目が集まっている。その代表例とし
て、プログラムの再利用性および拡張性を向上させるた
めに、プログラムをクラスファイルと呼ばれるファイル
に分解して設計を行うオブジェクト指向設計手法が導入
されている。2. Description of the Related Art In recent years, with the enormous growth of software, attention has been focused on programming languages that are excellent in reusability, extensibility, and productivity of programs. As a typical example, in order to improve reusability and extensibility of a program, an object-oriented design method is introduced in which the program is decomposed into files called class files for designing.
【0003】一方、プログラムの開発において大きな負
担となるメモリ管理についても、メモリ管理をプログラ
ム実行装置が自動的に行うことによって、プログラマの
負担を軽減する手法が提唱されている。具体的には、プ
ログラム実行装置がプログラムの実行時に確保し使用さ
れるメモリ領域を全て管理し、使用済みのメモリ領域を
自動的に検出して解放するガーベジコレクションと呼ば
れる手法が実用化されている。このガーベジコレクショ
ンは、動的な記憶領域の管理に用いられ、メモリ領域に
確保されたデータに対して使用中あるいは使用済みを判
断し、メモリ領域を再利用するために使用済み領域が束
ねられる処理が定期的に実行される。On the other hand, for memory management, which is a heavy burden in program development, a method has been proposed in which the program execution device automatically performs the memory management to reduce the burden on the programmer. Specifically, a method called garbage collection has been put into practical use, in which the program execution device manages all the memory areas that are reserved and used during program execution, and automatically detects and releases used memory areas. . This garbage collection is used for dynamic storage area management, and determines whether the data secured in the memory area is in use or used, and the used area is bundled to reuse the memory area. Is executed regularly.
【0004】上記オブジェクト指向設計手法が用いられ
たオブジェクト指向言語の一つであるJava(R)言
語は、Sun Microsystems社が開発した
オブジェクト指向言語であり、ハードウエアおよびソフ
トウエアプラットフォームに依存せずに同一のプログラ
ムを実行することができるという特徴を持つ。また、J
ava(R)では、言語仕様のレベルで上記ガーベジコ
レクションのサポートが明記されている。したがって、
プログラマは、Java(R)の処理系においては、プ
ログラムの側で使用済みのメモリ領域の解放を指示する
命令を記述する必要がなく、一般的に煩わしい処理であ
るメモリ管理に関する負担が軽減されるため、非常に生
産性の高いプログラム開発が可能となっている。The Java (R) language, which is one of the object-oriented languages in which the above-mentioned object-oriented design method is used, is an object-oriented language developed by Sun Microsystems and does not depend on hardware and software platforms. It has the feature that the same program can be executed. Also, J
In ava (R), the above-mentioned garbage collection support is specified at the level of the language specification. Therefore,
In the Java (R) processing system, the programmer does not need to write an instruction to release the used memory area on the program side, and the burden on the memory management, which is generally troublesome processing, is reduced. Therefore, highly productive program development is possible.
【0005】[0005]
【発明が解決しようとする課題】しかしながら、ガーベ
ジコレクションを採用したプログラム実行装置を備える
Java(R)処理系は、プログラマの負担が軽減され
る反面、プログラム実行装置にかかる処理負荷が増大す
るという欠点を持っている。すなわち、上記ガーベジコ
レクションの実行には多くの時間が必要であるため、プ
ログラム実行装置は、多くのプログラムの実行時間をガ
ーベジコレクション処理に割かれ、プログラム自体の実
行速度が低下してしまう。このような処理は、特にメモ
リ領域の割り当ておよび解放が頻繁に行われるようなプ
ログラムの実行において顕著である。However, the Java (R) processing system provided with a program execution device adopting garbage collection reduces the burden on the programmer, but has the disadvantage that the processing load on the program execution device increases. have. That is, since a lot of time is required to execute the garbage collection, the program execution device spends the execution time of many programs on the garbage collection process, which reduces the execution speed of the program itself. Such processing is particularly noticeable in the execution of programs in which memory areas are frequently allocated and released.
【0006】これに対し、プログラム実行装置のメモリ
管理にかかる処理負荷を軽減するための技術が、特開2
000−35893号公報および特開2000−330
793号公報に開示されている。On the other hand, a technique for reducing the processing load on the memory management of the program execution device is disclosed in Japanese Patent Laid-Open No.
000-35893 and JP 2000-330.
No. 793 is disclosed.
【0007】特開2000−35893号公報に開示さ
れている技術は、Java(R)プログラムの初期化メ
ソッドを含む「特別メソッド」を生成してクラスの初期
化が行われる。当該技術は、初期化のために行われる動
的なメモリ割り当て操作を、クラスファイルを結合さ
せ、そのクラスファイルの実行を容易にする予備処理を
行うプリローダで検出し、これらを静的な初期化に置き
換えることにより、プログラム実行装置が実行すべきコ
ード量を減少させるとともに、初期化に必要なメモリ使
用量を節約するものである。In the technique disclosed in Japanese Patent Laid-Open No. 2000-35893, a class is initialized by generating a "special method" including an initialization method of a Java (R) program. The technique detects dynamic memory allocation operations performed for initialization by a preloader that joins class files and performs preliminary processing that facilitates execution of the class files, and statically initializes these. By replacing with, the amount of code to be executed by the program execution device is reduced and the amount of memory used for initialization is saved.
【0008】しかしながら、上述した特開2000−3
5893号公報で開示された技術においては、対象とさ
れるのが「特別メソッド」を対象にした初期化処理のみ
であり、上記初期化処理以外における動的メモリ割り当
てに対しては、プログラム実行装置のメモリ管理にかか
る処理負荷が軽減されない。However, the above-mentioned Japanese Patent Laid-Open No. 2000-3
In the technique disclosed in Japanese Patent No. 5893, the target is only the initialization process for the "special method", and the program execution device is used for dynamic memory allocation other than the initialization process. The processing load related to memory management is not reduced.
【0009】一方、特開2000−330793号公報
に開示されている技術は、C言語、C++言語、および
Java(R)言語等で記述されたプログラムのソース
コードをオブジェクトコードにコンパイルする過程にお
いて、そのソースコードに含まれる動的なメモリ割り当
て操作命令を抽出し、その操作命令によって割り当てら
れるデータの生存区間を解析することにより、プログラ
ム実行時において動的メモリ管理にかかる負荷が低減さ
れるようにオブジェクトコードを書換えるものである。On the other hand, the technique disclosed in Japanese Unexamined Patent Publication No. 2000-330793 discloses a process of compiling the source code of a program described in C language, C ++ language, Java (R) language, etc. into an object code. By extracting the dynamic memory allocation operation instruction included in the source code and analyzing the live range of the data allocated by the operation instruction, it is possible to reduce the load on dynamic memory management during program execution. It rewrites the object code.
【0010】しかしながら、Java(R)の処理系に
おいては、Java(R)ソースコードをJava
(R)コンパイラでコンパイルして得られるJava
(R)クラスファイルの形式でプログラムが配布される
のが一般的である。つまり、上記特開2000−330
793号公報で開示された技術においては、対象となる
のがソースコードであるため、こういったクラスファイ
ルの形式で配布される一般的なJava(R)処理系に
は適用できなかった。また、当該技術では、上記オブジ
ェクト指向言語においてメソッドの呼出し処理(メソッ
ド間通信)が頻繁に行われるが、一般的に生存区間解析
処理はメソッドを越えた範囲で行うには困難が伴うた
め、適用範囲が限定的になる問題があった。However, in the Java (R) processing system, the Java (R) source code is converted to Java.
(R) Java obtained by compiling with a compiler
The program is generally distributed in the form of (R) class file. That is, the above-mentioned Japanese Patent Laid-Open No. 2000-330.
In the technique disclosed in Japanese Patent No. 793, since the target is the source code, it cannot be applied to a general Java (R) processing system distributed in such a class file format. Further, in this technique, method calling processing (inter-method communication) is frequently performed in the above object-oriented language, but in general, live range analysis processing is difficult to perform in a range beyond methods. There was a problem that the range was limited.
【0011】それ故に、本発明の目的は、オブジェクト
指向言語によるクラスファイルを実行するときのメモリ
管理にかかる処理負荷を軽減するプログラム実行装置お
よびその方法、並びにそこで実行されるプログラムを提
供するものである。Therefore, an object of the present invention is to provide a program execution device and method for reducing the processing load on the memory management when executing a class file in an object-oriented language, and a program executed there. is there.
【0012】[0012]
【課題を解決するための手段および発明の効果】上記目
的を達成するために、本発明は、以下に述べるような特
徴を有している。第1の発明は、オブジェクト指向言語
によるプログラムを所定のコンパイラによりコンパイル
することによって得られたクラスファイルを実行するプ
ログラム実行装置であって、複数の領域に分けられたメ
モリと、クラスファイルに記述されたメモリ割り当て操
作命令を検出するメモリ割り当て操作検出部と、メモリ
割り当て操作検出部によって検出されたメモリ割り当て
操作命令を解析し、該メモリ割り当て操作命令によって
クラスファイルの実行時に割り当てるべきメモリ領域を
選択するメモリ割り当て選択部と、メモリ割り当て選択
部によって選択されたメモリ領域とメモリ割り当て操作
命令とを対応づけたメモリ割り当て情報を記憶するメモ
リ割り当て情報記憶部と、クラスファイルを実行する命
令実行部と、命令実行部におけるクラスファイル中のメ
モリ割り当て操作命令の実行時に、メモリ割り当て情報
に基づいて該メモリ割り当て操作命令に対応したメモリ
領域を命令実行部に対して指示するメモリ割り当て実行
部とを備える。Means for Solving the Problems and Effects of the Invention In order to achieve the above object, the present invention has the following features. A first aspect of the present invention is a program execution device that executes a class file obtained by compiling a program in an object-oriented language with a predetermined compiler, and is described in a memory divided into a plurality of areas and a class file. A memory allocation operation detection unit for detecting the memory allocation operation instruction, and the memory allocation operation instruction detected by the memory allocation operation detection unit is analyzed, and the memory area to be allocated at the time of execution of the class file is selected by the memory allocation operation instruction. A memory allocation selecting unit, a memory allocation information storage unit that stores memory allocation information that associates the memory area selected by the memory allocation selecting unit with a memory allocation operation command, an instruction execution unit that executes a class file, and an instruction In the execution section Scan time of execution memory allocation operation instructions in the file to, and a memory allocation execution section for instructing the memory region corresponding to the memory allocation operation command based on the memory allocation information to the instruction execution unit.
【0013】第1の発明によれば、クラスファイルのプ
ログラム実行時において、プログラムによる動的なメモ
リ領域の管理にかかる負荷を軽減させることができ、プ
ログラムの実行効率を向上させることが可能となる。According to the first aspect of the present invention, it is possible to reduce the load on the dynamic management of the memory area by the program when the program of the class file is executed, and it is possible to improve the execution efficiency of the program. .
【0014】第2の発明は、第1の発明に従属する発明
であって、メモリ割り当て選択部は、メモリ割り当て操
作命令に関連する処理を、使用済みのメモリ領域を自動
的に検出して解放するガーベジコレクション処理の対象
であることと該ガーベジコレクション処理の対象でない
こととを区別することによってクラスファイルの実行時
に割り当てるべきメモリ領域を選択する。A second invention is according to the first invention, wherein the memory allocation selecting section automatically detects a used memory area and releases the processing related to the memory allocation operation instruction. The memory area to be allocated at the time of execution of the class file is selected by distinguishing between the target of the garbage collection processing and the target of the garbage collection processing.
【0015】第2の発明によれば、必ず実行終了まで生
存し続けるデータ等、ガーベジコレクション処理の妨げ
となるようなデータを、ガーベジコレクション処理の対
象から外すことができるため、システムはプログラム実
行のために本質的に必要なガーベジコレクション処理の
みに注力できるので、ガーベジコレクション処理にかか
る負荷を低減し、プログラムの実行効率を向上させるこ
とが可能となる。According to the second aspect of the present invention, data that always interferes with the garbage collection process, such as data that continues to exist until the end of execution, can be excluded from the target of the garbage collection process. Therefore, since it is possible to focus only on the garbage collection processing which is essentially necessary, it is possible to reduce the load on the garbage collection processing and improve the execution efficiency of the program.
【0016】第3の発明は、第1の発明に従属する発明
であって、メモリ割り当て選択部は、メモリ割り当て操
作命令に関連する処理が継続して実行される期間として
生存区間を算出し、その生存区間に基づいてクラスファ
イルの実行時に割り当てるべきメモリ領域を選択する。A third invention is an invention according to the first invention, wherein the memory allocation selecting unit calculates a live range as a period during which a process related to the memory allocation operation instruction is continuously executed, A memory area to be allocated when the class file is executed is selected based on the live range.
【0017】第3の発明によれば、生存区間が非常に短
いデータに対するメモリ割り当て操作を検出し、このデ
ータを一時的なデータ専用のメモリ領域に割り当てるこ
とによって、寿命の短いデータの頻繁な生成消滅によっ
てメモリ領域が乱されて、ガーベジコレクション処理の
実行に負荷がかかることを防止できるため、プログラム
の実行効率を向上させることが可能となる。According to the third aspect of the invention, a memory allocation operation for data whose life span is very short is detected, and this data is allocated to a temporary memory area dedicated to data, so that data with a short life is frequently generated. Since it is possible to prevent the memory area from being disturbed due to the disappearance and the load on the execution of the garbage collection process, it is possible to improve the execution efficiency of the program.
【0018】第4の発明は、第1の発明に従属する発明
であって、少なくとも1つの固定クラスファイルによっ
て構成され実行環境におけるクラスライブラリである組
込みクラスファイルを予め格納する組込みクラスファイ
ル記憶部と、予め組込みクラスファイルを解析すること
によって、メモリ割り当て操作命令によってクラスファ
イルの実行時に割り当てるべきメモリ領域を選択する基
準を示す選択補佐情報を記憶する選択補佐情報記憶部と
をさらに備え、メモリ割り当て選択部は、選択補佐情報
記憶部に記憶された選択補佐情報に基づいて、メモリ割
り当て操作検出部によって検出されたメモリ割り当て操
作命令によってクラスファイルの実行時に割り当てるべ
きメモリ領域を選択する。A fourth invention is an invention according to the first invention, and includes an embedded class file storage unit which stores in advance an embedded class file which is a class library in the execution environment and which is composed of at least one fixed class file. , Further includes a selection assistant information storage unit that stores selection assistant information indicating a criterion for selecting a memory area to be allocated at the time of execution of the class file by analyzing the embedded class file in advance, and memory allocation selection The section selects a memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction detected by the memory allocation operation detection section, based on the selection assistant information stored in the selection assistant information storage section.
【0019】第4の発明によれば、いかなるプログラム
を実行する場合においても内容が固定されたクラスファ
イルである組込みクラスファイルに対し、メモリ割り当
て選択ステップが必要とするクラスファイルの解析情報
を、予め選択補佐情報として与えることができる。した
がって、メモリ割り当て選択ステップにかかる処理の負
荷を低減することができる。さらに、メソッドを越えて
のデータの生存情報等、クラスファイルに記述されてい
る情報だけでは解析が困難であるような高度な選択補佐
情報を記述することにより、プログラムの実行時により
効率的なメモリ割り当てを行うことが可能となる。According to the fourth aspect of the invention, the analysis information of the class file required by the memory allocation selecting step is previously stored in the embedded class file, which is a class file whose content is fixed no matter which program is executed. It can be given as selection assistance information. Therefore, it is possible to reduce the processing load on the memory allocation selecting step. Furthermore, by describing advanced selection assistant information that is difficult to analyze only with the information described in the class file, such as survival information of data across methods, a more efficient memory can be executed during program execution. It becomes possible to make assignments.
【0020】第5の発明は、第4の発明に従属する発明
であって、選択補佐情報は、それぞれの組込みクラスに
対して該組込みクラスのインスタンスを割り当てるべき
メモリ領域を選択する基準が記述されていることを特徴
とする。A fifth aspect of the invention is an invention dependent on the fourth aspect of the invention, wherein the selection assistant information describes a criterion for selecting a memory area to which an instance of the built-in class is allocated for each built-in class. It is characterized by
【0021】第5の発明によれば、クラスファイルに記
述されている情報だけでは解析が困難であり、クラスと
しての全体の振舞い特性に基づいたメモリ領域の割り当
て方法を記述することができ、プログラムの実行時によ
り効率的なメモリ割り当てを行うことが可能となる。According to the fifth invention, it is difficult to analyze only the information described in the class file, and it is possible to describe the method of allocating the memory area based on the behavioral characteristics of the entire class. It becomes possible to perform more efficient memory allocation when executing.
【0022】第6の発明は、第4の発明に従属する発明
であって、選択補佐情報は、組込みクラスファイルによ
って実行されるメモリ割り当て操作命令に対して、該メ
モリ割り当て操作命令の実行時に割り当てるべきメモリ
領域を選択する基準が記述されていることを特徴とす
る。A sixth invention is according to the fourth invention, wherein the selection assistant information is assigned to a memory allocation operation instruction executed by the embedded class file when the memory allocation operation instruction is executed. It is characterized in that criteria for selecting a memory area to be written are described.
【0023】第6の発明によれば、メソッドを越えての
データの生存や大域変数の振舞い等、クラスファイルに
記述されている情報だけでは解析が困難であるような選
択補佐情報を、組込みクラスファイルのそれぞれのメモ
リ割り当て操作命令に対して記述することができるた
め、プログラムの実行時により効率的なメモリ割り当て
を行うことが可能となる。According to the sixth aspect of the invention, the selection assistant information that is difficult to analyze only with the information described in the class file, such as survival of data across methods and behavior of global variables, is used as a built-in class Since it is possible to describe each memory allocation operation instruction of the file, it becomes possible to perform more efficient memory allocation when the program is executed.
【0024】第7の発明は、第6の発明に従属する発明
であって、選択補佐情報は、メモリ割り当て操作命令を
実行する組込みクラスのインスタンスに割り当てられた
メモリ領域の選択結果に連動して、該メモリ割り当て操
作命令によって割り当てるべきメモリ領域を選択する基
準が記述されていることを特徴とする。A seventh invention is an invention according to the sixth invention, wherein the selection assistance information is linked with a selection result of the memory area allocated to the instance of the built-in class executing the memory allocation operation instruction. , A criterion for selecting a memory area to be allocated by the memory allocation operation command is described.
【0025】第7の発明によれば、組込みクラスのイン
スタンスメソッドにおいてメモリ領域が割り当てられる
データの生成消滅が、該インスタンスの生成消滅に完全
に連動するような場合に、このデータのメモリ領域の割
り当て方法として、例えば当該インスタンスに割り当て
られているデータ領域に隣接するように割り当てること
により、インスタンスの生成消滅に伴ってメモリ領域が
乱されてガーベジコレクション処理の実行に負荷がかか
ることを防止し、プログラムの実行効率を向上させるこ
とが可能となる。According to the seventh aspect of the present invention, when the generation / disappearance of the data to which the memory area is allocated in the instance method of the built-in class is completely linked to the generation / disappearance of the instance, the allocation of the memory area for this data is performed. As a method, for example, by allocating the data area so that it is adjacent to the data area allocated to the instance, it is possible to prevent the memory area from being disturbed due to the generation and disappearance of the instance, which may impose a load on the execution of the garbage collection process. It is possible to improve the execution efficiency of.
【0026】第8の発明は、第3の発明に従属する発明
であって、少なくとも1つの固定クラスファイルによっ
て構成され実行環境におけるクラスライブラリである組
込みクラスファイルを予め格納する組込みクラスファイ
ル記憶部と、予め組込みクラスファイルを解析すること
によって、メモリ割り当て操作命令によってクラスファ
イルの実行時に割り当てるべきメモリ領域を選択する基
準を示す選択補佐情報を記憶する選択補佐情報記憶部と
をさらに備え、選択補佐情報は、組込みクラスファイル
のそれぞれのメソッドに対して、該メソッドの実行によ
って生成されるデータが継続して使用される生存区間に
与える影響が記述され、メモリ割り当て選択部は、選択
補佐情報記憶部に記憶された選択補佐情報に基づいて、
メモリ割り当て操作検出部によって検出されたメモリ割
り当て操作命令によってクラスファイルの実行時に割り
当てるべきメモリ領域を選択する。An eighth invention is an invention according to the third invention, and includes an embedded class file storage unit which stores in advance an embedded class file which is a class library in the execution environment and which is constituted by at least one fixed class file. , Further includes a selection assistant information storage unit that stores selection assistant information indicating a criterion for selecting a memory area to be allocated at the time of execution of the class file by analyzing the embedded class file in advance, and the selection assistant information. Describes for each method of the built-in class file the effect that the data generated by the execution of the method has on the live range in which it is continuously used. Based on the stored selection assistant information,
A memory area to be allocated when the class file is executed is selected by the memory allocation operation instruction detected by the memory allocation operation detection unit.
【0027】第8の発明によれば、クラスファイルに記
述されている情報だけでは解析が困難である、メソッド
を越えて、すなわちメソッド呼出しを挟んでのデータの
生存区間の解析を容易に行うことができ、その解析結果
に基づいて、プログラムの実行時により効率的なメモリ
割り当てを行うことが可能となる。According to the eighth invention, it is difficult to analyze only the information described in the class file. It is easy to analyze the live range of data across methods, that is, between method calls. Based on the analysis result, more efficient memory allocation can be performed when the program is executed.
【0028】第9の発明は、第8の発明に従属する発明
であって、選択補佐情報は、メソッドの実行によって生
成されるデータの生存区間に与える影響が、組込みクラ
スファイルのメソッドに渡される引数の実行時の型に依
存して記述され、メモリ割り当て選択部は、組込みクラ
スのインスタンスの型を解析し、インスタンスの実行時
の型に基づいて選択補佐情報を参照することによって、
メモリ割り当て操作検出部によって検出されたメモリ割
り当て操作命令によってクラスファイルの実行時に割り
当てるべきメモリ領域を選択することを特徴とする。A ninth aspect of the invention is an aspect dependent on the eighth aspect of the invention, wherein the influence of the selection assistant information on the live range of the data generated by the execution of the method is passed to the method of the embedded class file. Described depending on the runtime type of the argument, the memory allocation selection unit analyzes the type of the instance of the built-in class, and by referring to the selection assistant information based on the runtime type of the instance,
It is characterized in that the memory area to be allocated at the time of execution of the class file is selected by the memory allocation operation instruction detected by the memory allocation operation detection unit.
【0029】第9の発明によれば、組込みクラスのある
メソッドが呼出されるときに、当該メソッドの引数とし
てインスタンスへの参照が渡される場合において、その
インスタンスの実行時の型(動的束縛)によって当該メ
ソッドの動作が変化するような状況においても、その実
行時の型に基づいて、それぞれ適切な選択補佐情報を記
述することができる。したがって、メモリ割り当て選択
ステップで行われる型解析によって、例えば当該メソッ
ドの引数に参照として渡されるインスタンスの実行時の
型(クラス)が一意に定まった場合には、当該メソッド
の動作をより詳細に記述した選択補佐情報を適用すると
いったことが可能となるため、より効率的なメモリ領域
の割り当てを行うことができる。According to the ninth aspect, when a method of a built-in class is called, when a reference to the instance is passed as an argument of the method, the runtime type of the instance (dynamic binding) Even in a situation where the operation of the method changes due to, the appropriate selection assistant information can be described based on the type at the time of execution. Therefore, if the runtime type (class) of the instance passed as a reference to the argument of the method is uniquely determined by the type analysis performed in the memory allocation selection step, describe the operation of the method in more detail. Since it is possible to apply the selected selection assistant information, it is possible to more efficiently allocate the memory area.
【0030】第10の発明は、第4の発明に従属する発
明であって、選択補佐情報は、java.lang.S
tringクラスに対して、メモリ割り当て操作命令に
よってクラスファイルの実行時に割り当てるべきメモリ
領域を選択する基準が記述されていることを特徴とす
る。The tenth invention is an invention subordinate to the fourth invention, wherein the selection assistance information is java. Lang. S
It is characterized in that criteria for selecting a memory area to be allocated at the time of execution of a class file by a memory allocation operation instruction are described for the string class.
【0031】第10の発明によれば、一般のJava
(R)アプリケーションにおいて頻繁に用いられる文字
列操作に伴って生成されるjava.lang.Str
ingクラスのインスタンスを、必要に応じて別のメモ
リ領域に割り当てることができるため、これらのインス
タンスの生成消滅によってメモリ領域が乱されてガーベ
ジコレクションの実行に負荷がかかることを防止し、プ
ログラムの実行効率を向上させることが可能となる。According to the tenth invention, general Java
(R) A java. Lang. Str
Instances of the ing class can be allocated to different memory areas as needed, so it is possible to prevent the memory area from being disturbed by the creation and disappearance of these instances, and to prevent garbage collection from being executed. It is possible to improve efficiency.
【0032】第11の発明は、第4の発明に従属する発
明であって、選択補佐情報は、java.lang.S
tringBufferクラスに対して、メモリ割り当
て操作命令によってクラスファイルの実行時に割り当て
るべきメモリ領域を選択する基準が記述されていること
を特徴とする。An eleventh invention is an invention dependent on the fourth invention, wherein the selection assistance information is java. Lang. S
For the stringBuffer class, the criteria for selecting the memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction are described.
【0033】第11の発明によれば、一般のJava
(R)アプリケーションにおいて頻繁に用いられる文字
列操作に伴って生成されるjava.lang.Str
ingBufferクラスのインスタンスを、必要に応
じて別のメモリ領域に割り当てることができるため、こ
れらのインスタンスの生成消滅によってメモリ領域が乱
されてガーベジコレクションの実行に負荷がかかること
を防止し、プログラムの実行効率を向上させることが可
能となる。According to the eleventh invention, a general Java
(R) A java. Lang. Str
Instances of the ingBuffer class can be allocated to different memory areas as needed, so it is possible to prevent the memory area from being disturbed by the creation and disappearance of these instances, and to prevent the garbage collection from being executed. It is possible to improve efficiency.
【0034】第12の発明は、第1の発明に従属する発
明であって、メモリ割り当て選択部は、メモリ割り当て
操作検出部によって検出されたメモリ割り当て操作命令
によってクラスファイルの実行時に割り当てるべきメモ
リ領域を選択する処理を、クラスファイルのロード時に
行うことを特徴とする。A twelfth invention is according to the first invention, wherein the memory allocation selecting section is a memory area to be allocated when the class file is executed by the memory allocation operation instruction detected by the memory allocation operation detecting section. The feature is that the process of selecting is performed when the class file is loaded.
【0035】第12の発明によれば、不要なクラスファ
イルについてはメモリ割り当て選択ステップによる処理
が発生しないため、メモリ割り当て選択ステップによる
負荷を最低限に抑えることができる。さらに、クラスフ
ァイルのロード時に行われるベリファイの処理と同時に
メモリ割り当て選択ステップの処理を行うことができる
ため、ベリファイの過程で生成された型情報やその他の
情報をメモリ割り当ての選択にそのまま利用することが
できる。According to the twelfth aspect of the invention, since the processing in the memory allocation selecting step does not occur for unnecessary class files, the load in the memory allocation selecting step can be minimized. Furthermore, since the memory allocation selection step can be performed at the same time as the verification processing that is performed when the class file is loaded, the type information and other information generated during the verification process can be used as is for memory allocation selection. You can
【0036】第13の発明は、第1の発明に従属する発
明であって、メモリ割り当て選択部は、メモリ割り当て
操作検出部によって検出されたメモリ割り当て操作命令
によってクラスファイルの実行時に割り当てるべきメモ
リ領域を選択する処理を、メモリ割り当て操作命令を含
むメソッドの初回あるいは所定回毎に行うことを特徴と
する。A thirteenth invention is an invention according to the first invention, wherein the memory allocation selecting section is a memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction detected by the memory allocation operation detecting section. Is selected every time the method including the memory allocation operation instruction is executed for the first time or every predetermined number of times.
【0037】第13の発明によれば、あるメソッドが一
定の閾値を越えた回数、例えば10回目に呼ばれた時に
メモリ割り当て選択ステップによるメモリ領域の選択を
行うようにすることにより、頻繁に呼出される、すなわ
ちプログラムの実行性能に大きく寄与する部分のメモリ
割り当てのみを重点的に選択させることができる。した
がって、より低いメモリ割り当て選択ステップの負荷
で、より効率的なメモリ領域の割り当てを行うことが可
能となる。According to the thirteenth aspect of the invention, the memory area is selected by the memory allocation selecting step when the method is called the number of times exceeding a certain threshold, for example, the tenth time, so that the method is frequently called. That is, it is possible to select only the memory allocation of the portion that largely contributes to the execution performance of the program. Therefore, it is possible to more efficiently allocate the memory area with a lower load of the memory allocation selecting step.
【0038】第14の発明は、オブジェクト指向言語に
よるプログラムを所定のコンパイラによりコンパイルす
ることによって得られたクラスファイルを、複数の領域
に分けられたメモリを用いて実行するプログラム実行方
法であって、クラスファイルに記述されたメモリ割り当
て操作命令を検出するメモリ割り当て操作検出ステップ
と、メモリ割り当て操作検出ステップによって検出され
たメモリ割り当て操作命令を解析し、該メモリ割り当て
操作命令によってクラスファイルの実行時に割り当てる
べきメモリ領域を選択するメモリ割り当て選択ステップ
と、メモリ割り当て選択ステップによって選択されたメ
モリ領域とメモリ割り当て操作命令とを対応づけたメモ
リ割り当て情報を記憶するメモリ割り当て情報記憶ステ
ップと、クラスファイルを実行する命令実行ステップ
と、命令実行ステップにおけるクラスファイル中のメモ
リ割り当て操作命令の実行時に、メモリ割り当て情報に
基づいて該メモリ割り当て操作命令に対応したメモリ領
域を命令実行ステップに対して指示するメモリ割り当て
実行ステップとを含む。A fourteenth invention is a program execution method for executing a class file obtained by compiling a program in an object-oriented language by a predetermined compiler, using a memory divided into a plurality of areas, A memory allocation operation detection step of detecting a memory allocation operation instruction described in the class file, and a memory allocation operation instruction detected by the memory allocation operation detection step should be analyzed and allocated by the memory allocation operation instruction when the class file is executed. A memory allocation selecting step of selecting a memory area; a memory allocation information storing step of storing memory allocation information associating the memory area selected by the memory allocation selecting step with a memory allocation operation instruction; Instruction execution step for executing a file, and at the time of executing the memory allocation operation instruction in the class file in the instruction execution step, a memory area corresponding to the memory allocation operation instruction is instructed to the instruction execution step based on the memory allocation information. A memory allocation execution step.
【0039】第15の発明は、第14の発明に従属する
発明であって、メモリ割り当て選択ステップは、メモリ
割り当て操作命令に関連する処理を、使用済みのメモリ
領域を自動的に検出して解放するガーベジコレクション
処理の対象であることと該ガーベジコレクション処理の
対象でないこととを区別することによってクラスファイ
ルの実行時に割り当てるべきメモリ領域を選択する。A fifteenth invention is an invention dependent on the fourteenth invention, wherein the memory allocation selecting step automatically detects a used memory area and releases the processing related to the memory allocation operation instruction. The memory area to be allocated at the time of execution of the class file is selected by distinguishing between the target of the garbage collection processing and the target of the garbage collection processing.
【0040】第16の発明は、第14の発明に従属する
発明であって、メモリ割り当て選択ステップは、メモリ
割り当て操作命令に関連する処理が継続して実行される
期間として生存区間を算出し、その生存区間に基づいて
クラスファイルの実行時に割り当てるべきメモリ領域を
選択する。A sixteenth invention is an invention according to the fourteenth invention, wherein the memory allocation selecting step calculates a live range as a period during which a process related to the memory allocation operation instruction is continuously executed, A memory area to be allocated when the class file is executed is selected based on the live range.
【0041】第17の発明は、第14の発明に従属する
発明であって、少なくとも1つの固定クラスファイルに
よって構成され実行環境におけるクラスライブラリであ
る組込みクラスファイルを予め格納する組込みクラスフ
ァイル記憶ステップと、予め組込みクラスファイルを解
析することによって、メモリ割り当て操作命令によって
クラスファイルの実行時に割り当てるべきメモリ領域を
選択する基準を示す選択補佐情報を記憶する選択補佐情
報記憶ステップとをさらに含み、メモリ割り当て選択ス
テップは、選択補佐情報記憶ステップに記憶された選択
補佐情報に基づいて、メモリ割り当て操作検出ステップ
によって検出されたメモリ割り当て操作命令によってク
ラスファイルの実行時に割り当てるべきメモリ領域を選
択する。A seventeenth invention is an invention according to the fourteenth invention, and includes a built-in class file storing step for pre-storing a built-in class file which is a class library in the execution environment and which is composed of at least one fixed class file. Further comprising a selection assistant information storing step of storing selection assistant information indicating a criterion for selecting a memory area to be allocated at the time of execution of the class file by analyzing the embedded class file in advance, and selecting the memory allocation. The step selects a memory area to be allocated at the time of execution of the class file by the memory allocation operation command detected by the memory allocation operation detection step, based on the selection assistant information stored in the selection assistant information storage step.
【0042】第18の発明は、第17の発明に従属する
発明であって、選択補佐情報は、それぞれの組込みクラ
スに対して該組込みクラスのインスタンスを割り当てる
べきメモリ領域を選択する基準が記述されていることを
特徴とする。An eighteenth invention is an invention subordinate to the seventeenth invention, wherein the selection assistant information describes a criterion for selecting a memory area to which an instance of the built-in class is allocated for each built-in class. It is characterized by
【0043】第19の発明は、第17の発明に従属する
発明であって、選択補佐情報は、組込みクラスファイル
によって実行されるメモリ割り当て操作命令に対して、
該メモリ割り当て操作命令の実行時に割り当てるべきメ
モリ領域を選択する基準が記述されていることを特徴と
する。A nineteenth invention is an invention according to the seventeenth invention, wherein the selection assistant information is for a memory allocation operation instruction executed by an embedded class file,
It is characterized in that criteria for selecting a memory area to be allocated at the time of executing the memory allocation operation instruction are described.
【0044】第20の発明は、第19の発明に従属する
発明であって、選択補佐情報は、メモリ割り当て操作命
令を実行する組込みクラスのインスタンスに割り当てら
れたメモリ領域の選択結果に連動して、該メモリ割り当
て操作命令によって割り当てるべきメモリ領域を選択す
る基準が記述されていることを特徴とする。A twentieth aspect of the invention is an invention dependent on the nineteenth aspect of the invention, wherein the selection assistance information is linked to the selection result of the memory area allocated to the instance of the built-in class executing the memory allocation operation instruction. , A criterion for selecting a memory area to be allocated by the memory allocation operation command is described.
【0045】第21の発明は、第16の発明に従属する
発明であって、少なくとも1つの固定クラスファイルに
よって構成され実行環境におけるクラスライブラリであ
る組込みクラスファイルを予め格納する組込みクラスフ
ァイル記憶ステップと、予め組込みクラスファイルを解
析することによって、メモリ割り当て操作命令によって
クラスファイルの実行時に割り当てるべきメモリ領域を
選択する基準を示す選択補佐情報を記憶する選択補佐情
報記憶ステップとをさらに含み、選択補佐情報は、組込
みクラスファイルのそれぞれのメソッドに対して、該メ
ソッドの実行によって生成されるデータが継続して使用
される生存区間に与える影響が記述され、メモリ割り当
て選択ステップは、選択補佐情報記憶ステップに記憶さ
れた選択補佐情報に基づいて、メモリ割り当て操作検出
ステップによって検出されたメモリ割り当て操作命令に
よってクラスファイルの実行時に割り当てるべきメモリ
領域を選択する。A twenty-first invention is an invention subordinate to the sixteenth invention, and includes an embedded class file storing step for pre-storing an embedded class file which is a class library in the execution environment and which is constituted by at least one fixed class file. Further comprising a selection assistant information storage step of storing selection assistant information indicating a criterion for selecting a memory area to be allocated at the time of execution of the class file by analyzing the embedded class file in advance, the selection assistant information. Describes for each method of the built-in class file the effect that the data generated by the execution of the method has on the live range in which it is continuously used. Memorized selection assistant information Based on, selects the memory area to be allocated when the class file is executed by the memory allocation operation detection step by the detected memory allocation operation instruction.
【0046】第22の発明は、第21の発明に従属する
発明であって、選択補佐情報は、メソッドの実行によっ
て生成されるデータの生存区間に与える影響が、組込み
クラスファイルのメソッドに渡される引数の実行時の型
に依存して記述され、メモリ割り当て選択ステップは、
組込みクラスのインスタンスの型を解析し、インスタン
スの実行時の型に基づいて選択補佐情報を参照すること
によって、メモリ割り当て操作検出ステップによって検
出されたメモリ割り当て操作命令によってクラスファイ
ルの実行時に割り当てるべきメモリ領域を選択すること
を特徴とする。A twenty-second aspect of the invention is an invention dependent on the twenty-first aspect of the invention, and in the selection assistant information, the influence on the live range of the data generated by the execution of the method is passed to the method of the built-in class file. Described depending on the runtime type of the argument, the memory allocation selection step is
The memory to be allocated at the time of execution of the class file by the memory allocation operation instruction detected by the memory allocation operation detection step by analyzing the instance type of the built-in class and referencing the selection assistance information based on the runtime type of the instance It is characterized by selecting a region.
【0047】第23の発明は、第17の発明に従属する
発明であって、選択補佐情報は、java.lang.
Stringクラスに対して、メモリ割り当て操作命令
によってクラスファイルの実行時に割り当てるべきメモ
リ領域を選択する基準が記述されていることを特徴とす
る。The twenty-third invention is an invention subordinate to the seventeenth invention, wherein the selection assistance information is java. Lang.
For the String class, the criteria for selecting the memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction are described.
【0048】第24の発明は、第17の発明に従属する
発明であって、選択補佐情報は、java.lang.
StringBufferクラスに対して、メモリ割り
当て操作命令によってクラスファイルの実行時に割り当
てるべきメモリ領域を選択する基準が記述されているこ
とを特徴とする。A twenty-fourth invention is an invention dependent on the seventeenth invention, wherein the selection assistance information is java. Lang.
For the StringBuffer class, the criteria for selecting the memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction are described.
【0049】第25の発明は、第14の発明に従属する
発明であって、メモリ割り当て選択ステップは、メモリ
割り当て操作検出ステップによって検出されたメモリ割
り当て操作命令によってクラスファイルの実行時に割り
当てるべきメモリ領域を選択する処理を、クラスファイ
ルのロード時に行うことを特徴とする。A twenty-fifth invention is according to the fourteenth invention, wherein the memory allocation selecting step is a memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction detected by the memory allocation operation detecting step. The feature is that the process of selecting is performed when the class file is loaded.
【0050】第26の発明は、第14の発明に従属する
発明であって、メモリ割り当て選択ステップは、メモリ
割り当て操作検出ステップによって検出されたメモリ割
り当て操作命令によってクラスファイルの実行時に割り
当てるべきメモリ領域を選択する処理を、メモリ割り当
て操作命令を含むメソッドの初回あるいは所定回毎に行
うことを特徴とする。A twenty-sixth invention is an invention according to the fourteenth invention, wherein the memory allocation selecting step is a memory area to be allocated at the time of execution of the class file by the memory allocation operating instruction detected by the memory allocation operation detecting step. Is selected every time the method including the memory allocation operation instruction is executed for the first time or every predetermined number of times.
【0051】第27の発明は、オブジェクト指向言語に
よるプログラムを所定のコンパイラによりコンパイルす
ることによって得られたクラスファイルを、複数の領域
に分けられたメモリを用いて処理するコンピュータが実
行するプログラムであって、クラスファイルに記述され
たメモリ割り当て操作命令を検出するメモリ割り当て操
作検出ステップと、メモリ割り当て操作検出ステップに
よって検出されたメモリ割り当て操作命令を解析し、該
メモリ割り当て操作命令によってクラスファイルの実行
時に割り当てるべきメモリ領域を選択するメモリ割り当
て選択ステップと、メモリ割り当て選択ステップによっ
て選択されたメモリ領域とメモリ割り当て操作命令とを
対応づけたメモリ割り当て情報を記憶するメモリ割り当
て情報記憶ステップと、クラスファイルを実行する命令
実行ステップと、命令実行ステップにおけるクラスファ
イル中のメモリ割り当て操作命令の実行時に、メモリ割
り当て情報に基づいて該メモリ割り当て操作命令に対応
したメモリ領域を命令実行ステップに対して指示するメ
モリ割り当て実行ステップとを含む。The twenty-seventh invention is a program executed by a computer which processes a class file obtained by compiling a program in an object-oriented language by a predetermined compiler, using a memory divided into a plurality of areas. The memory allocation operation detection step of detecting the memory allocation operation instruction described in the class file, and the memory allocation operation instruction detected by the memory allocation operation detection step is analyzed, and when the class file is executed by the memory allocation operation instruction. A memory allocation selecting step for selecting a memory area to be allocated and a memory allocation information storage step for storing memory allocation information in which the memory area selected in the memory allocation selecting step and the memory allocation operation instruction are associated with each other. An instruction execution step for executing the class file, and a memory area corresponding to the memory allocation operation instruction based on the memory allocation information when executing the memory allocation operation instruction in the class file in the instruction execution step. And a memory allocation execution step for instructing.
【0052】第28の発明は、第27の発明に従属する
発明であって、少なくとも1つの固定クラスファイルに
よって構成され実行環境におけるクラスライブラリであ
る組込みクラスファイルを予め格納する組込みクラスフ
ァイル記憶ステップと、予め組込みクラスファイルを解
析することによって、メモリ割り当て操作命令によって
クラスファイルの実行時に割り当てるべきメモリ領域を
選択する基準を示す選択補佐情報を記憶する選択補佐情
報記憶ステップとをさらに含み、メモリ割り当て選択ス
テップは、選択補佐情報記憶ステップに記憶された選択
補佐情報に基づいて、メモリ割り当て操作検出ステップ
によって検出されたメモリ割り当て操作命令によってク
ラスファイルの実行時に割り当てるべきメモリ領域を選
択する。A twenty-eighth invention is an invention according to the twenty-seventh invention, and includes an embedded class file storing step of pre-storing an embedded class file which is a class library in the execution environment and which is constituted by at least one fixed class file. Further comprising a selection assistant information storing step of storing selection assistant information indicating a criterion for selecting a memory area to be allocated at the time of execution of the class file by analyzing the embedded class file in advance, and selecting the memory allocation. The step selects a memory area to be allocated at the time of execution of the class file by the memory allocation operation command detected by the memory allocation operation detection step, based on the selection assistant information stored in the selection assistant information storage step.
【0053】[0053]
【発明の実施の形態】(第1の実施形態)図1は、第1
の実施形態に係るプログラム実行装置のハード構成を示
すブロック図である。図1において、当該プログラム実
行装置は、中央演算装置(CPU)1、記憶装置2、入
力装置3、出力装置4、および送受信装置5を備えてお
り、それぞれの装置はシステムバス6を介して接続され
ている。記憶装置2は、ROM(Read−Only
Memory)、RAM(Random−Access
Memory)、およびハードディスク等で構成さ
れ、CPU1が処理する際に用いられる記憶領域やプロ
グラム自体を記憶する領域として用いられる。入力装置
3は、典型的には、キーボードやマウス等で構成され、
ユーザからの指示をプログラム実行装置に入力する入力
処理を行う。出力装置4は、液晶ディスプレイ装置等の
表示装置やスピーカによって構成され、CPU1から出
力されるデータを画面表示したり、音声データを再生す
る等の出力処理を行う。送受信装置5は、無線あるいは
有線伝送路を介してデータ通信を行い、CPU1は、送
受信装置5を介して外部装置(図示せず)からプログラ
ム等のデータを受信したり、処理結果を外部装置に送信
したりすることができる。なお、入力装置3、出力装置
4、および送受信装置5は、プログラム実行装置が用い
られる環境や要求される機能によって、備えてなくても
かまわない。例えば、外部装置とのデータ通信が不要で
ある場合、プログラム実行装置は、送受信装置5を備え
ていなくてもかまわない。BEST MODE FOR CARRYING OUT THE INVENTION (First Embodiment) FIG.
It is a block diagram showing a hardware configuration of a program execution device according to the embodiment of. In FIG. 1, the program execution device includes a central processing unit (CPU) 1, a storage device 2, an input device 3, an output device 4, and a transmission / reception device 5, each of which is connected via a system bus 6. Has been done. The storage device 2 is a ROM (Read-Only).
Memory), RAM (Random-Access)
Memory), a hard disk, etc., and is used as a storage area used when the CPU 1 processes and an area for storing the program itself. The input device 3 is typically composed of a keyboard, a mouse, etc.,
Input processing for inputting an instruction from the user to the program execution device is performed. The output device 4 is configured by a display device such as a liquid crystal display device and a speaker, and performs output processing such as screen display of data output from the CPU 1 and reproduction of audio data. The transmission / reception device 5 performs data communication via a wireless or wired transmission path, and the CPU 1 receives data such as a program from an external device (not shown) via the transmission / reception device 5 and outputs a processing result to the external device. You can send it. The input device 3, the output device 4, and the transmission / reception device 5 may not be provided depending on the environment in which the program execution device is used and the required function. For example, when data communication with an external device is unnecessary, the program execution device does not need to include the transmission / reception device 5.
【0054】図2は、本発明のプログラムをプログラム
実行装置で実行することによって形成される機能構成の
一例を示す機能ブロック図である。なお、上記プログラ
ムを適当な記憶媒体に包含させることも可能であり、上
記プログラムを他の処理装置にインストールすることに
よって、同様の機能を移植することも可能である。FIG. 2 is a functional block diagram showing an example of a functional configuration formed by executing the program of the present invention by the program execution device. The program can be included in an appropriate storage medium, and the same function can be ported by installing the program in another processing device.
【0055】図2において、プログラム実行装置は、プ
ログラム実行部10および記憶部20を備えている。プ
ログラム実行部10は、メモリ割り当て操作検出部1
1、メモリ割り当て選択部12、メモリ割り当て情報記
憶部13、命令実行部14、およびメモリ割り当て実行
部15を備えている。また、記憶部20は、プログラム
実行部10が実行する過程で必要となる記憶領域であ
り、メモリ領域αおよびβから構成されている。ここ
で、プログラム実行部10への入力は、オブジェクト指
向言語として代表的なJava(R)言語にて記述した
プログラムを、ユーザが所定のJava(R)コンパイ
ラによりコンパイルすることによって得られたJava
(R)クラスファイル(以下、クラスファイル500と
する)であるものとする。In FIG. 2, the program execution device includes a program execution unit 10 and a storage unit 20. The program execution unit 10 includes a memory allocation operation detection unit 1
1, a memory allocation selection unit 12, a memory allocation information storage unit 13, an instruction execution unit 14, and a memory allocation execution unit 15. The storage unit 20 is a storage area required in the process of execution by the program execution unit 10, and is composed of memory areas α and β. Here, the input to the program execution unit 10 is a Java obtained by a user compiling a program written in a typical Java (R) language as an object-oriented language by a predetermined Java (R) compiler.
(R) Class file (hereinafter referred to as class file 500).
【0056】上述したコンパイルの一例として、図3は
Java(R)言語にて記述したプログラムを示し、図
4は図3で示したプログラムをコンパイルして得られた
クラスファイル500の中から、バイトコードBC部分
を抜粋して示したものである。なお、図3は、Java
(R)のソースコードfoo.javaで示されるプロ
グラムであり、プログラム実行部10には、該ソースコ
ードをコンパイルして得られたクラスファイル500が
入力される。As an example of the above-described compilation, FIG. 3 shows a program written in the Java (R) language, and FIG. 4 shows a byte from the class file 500 obtained by compiling the program shown in FIG. This is an excerpt of the code BC portion. Note that FIG. 3 shows Java.
(R) source code foo. A class file 500 obtained by compiling the source code is input to the program execution unit 10, which is a program indicated by Java.
【0057】メモリ割り当て操作検出部11は、クラス
ファイル500に記述されているプログラム、すなわち
Java(R)VMで用いられるバイトコードBC列の
中から、動的なメモリ割り当て操作を行う命令を検出す
る。図4に示されるようなJava(R)バイトコード
BCにおいて、動的にメモリ割り当てを行う命令として
は、具体的には、新たなインスタンスを生成する「ne
w」や、新たな配列を生成する「newarray」、
「anewarray」、および「multianew
array」、あるいはjava.lang.Stri
ngクラスのインスタンスを生成する「ldc」(CO
NSTANT_Stringの場合)等がある(図4の
一例では、アドレス1および13に記載されている「n
ewarray int」が動的にメモリ割り当てを行
う命令に相当する)。メモリ割り当て操作検出部11
は、上記バイトコードBC列の中で検出されたこれらの
命令の場所を示す所定の情報をクラスファイル500に
付与し、メモリ割り当て選択部12に出力する。The memory allocation operation detection unit 11 detects an instruction for performing a dynamic memory allocation operation from the program described in the class file 500, that is, the bytecode BC sequence used in the Java (R) VM. . In the Java (R) bytecode BC as shown in FIG. 4, as an instruction for dynamically allocating memory, specifically, "ne" for generating a new instance is used.
w ”,“ newarray ”that creates a new array,
"Newarray," and "multinew
array ”, or Java. Lang. Stri
"ldc" (CO that creates an instance of ng class
In the case of NSTANT_String), etc. (in the example of FIG. 4, “n” described in addresses 1 and 13)
"ewarray int" corresponds to an instruction for dynamically allocating memory). Memory allocation operation detection unit 11
Adds the predetermined information indicating the locations of these instructions detected in the above bytecode BC sequence to the class file 500 and outputs it to the memory allocation selecting unit 12.
【0058】メモリ割り当て選択部12は、メモリ割り
当て操作検出部11によって検出された上記メモリ割り
当て操作命令について、それぞれ実行時に割り当てるべ
き記憶部20のメモリ領域αあるいはβを選択する。メ
モリ割り当て選択部12が行うメモリ領域αあるいはβ
の選択の基準としては、当該メモリ割り当て操作によっ
て記憶部20に格納されるデータの生存区間を解析し、
その生存区間の長さに応じて割り当てるべきメモリ領域
αあるいはβが選択される(詳細は、後述する)。The memory allocation selecting section 12 selects the memory area α or β of the storage section 20 to be allocated at the time of execution for each of the memory allocation operation instructions detected by the memory allocation operation detecting section 11. Memory area α or β performed by the memory allocation selecting unit 12
As a criterion for selecting, the live range of the data stored in the storage unit 20 by the memory allocation operation is analyzed,
The memory area α or β to be allocated is selected according to the length of the live range (details will be described later).
【0059】メモリ割り当て情報記憶部13は、メモリ
割り当て選択部12によって選択された割り当てるべき
メモリ領域αあるいはβの選択結果を示す、メモリ割り
当て情報を記憶する。このメモリ割り当て情報は、クラ
スファイル500中の上記メモリ割り当て操作命令に対
して、そのメモリ割り当て操作命令によって割り当てら
れるべきメモリ領域αあるいはβの選択結果を対応させ
た組によって構成される。これは、上記メモリ割り当て
操作命令をキーとし、割り当てられるべきメモリ領域α
あるいはβをレコードとしたデータベースを構築するこ
とによって実現することができる。The memory allocation information storage unit 13 stores memory allocation information indicating the selection result of the memory area α or β to be allocated which is selected by the memory allocation selection unit 12. The memory allocation information is composed of a set in which the memory allocation operation instruction in the class file 500 is associated with the selection result of the memory area α or β to be allocated by the memory allocation operation instruction. This is a memory area α to be allocated with the memory allocation operation instruction as a key.
Alternatively, it can be realized by constructing a database having β as a record.
【0060】命令実行部14は、クラスファイル500
に記述されたプログラム、すなわち図4で一例を示した
Java(R)バイトコードBCを実行する。ここで、
命令実行部14が実行するバイトコードが上記メモリ割
り当て操作命令である場合、命令実行部14は、メモリ
割り当て実行部15を呼び出す。一方、命令実行部14
が実行するバイトコードが上記メモリ割り当て操作命令
以外の場合、従来と同様にそのバイトコードに応じたプ
ログラムを実行する(これらの実行については、例え
ば、“ティム・リンドホルム、フランク・イェリン共
著、「The JavaTM仮想マシン仕様」、アジソン
・ウェスレイ・パブリッシャーズ・ジャパン株式会社、
1997年12月25日初版第1刷発行”(以下、従来
技術文献1とする)に詳述されている)。The instruction executing section 14 uses the class file 500.
4), that is, the Java (R) bytecode BC illustrated in FIG. 4 is executed. here,
When the bytecode executed by the instruction executing unit 14 is the memory allocation operation instruction, the instruction executing unit 14 calls the memory allocation executing unit 15. On the other hand, the instruction execution unit 14
If the bytecode to be executed is other than the memory allocation operation instruction, the program corresponding to the bytecode is executed as in the conventional case. Java ™ Virtual Machine Specification, "Addison-Wesley Publishers Japan KK,
December 25, 1997, first edition, first printing issue "(hereinafter referred to as prior art document 1)".
【0061】メモリ割り当て実行部15は、クラスファ
イル500に記述されたメモリ割り当て操作命令を実行
する。メモリ割り当て実行部15は、メモリ割り当て情
報記憶部13に格納されている上記メモリ割り当て情報
の中から、命令実行部14が実行しようとしている上記
メモリ割り当て操作命令に対応するメモリ割り当て情報
を検索して取得する。そして、メモリ割り当て実行部1
5は、取得した上記メモリ割り当て情報に基づいて、記
憶部20の中から割り当てるべきメモリ領域αあるいは
βに対してメモリ領域を確保し、命令実行部14に制御
を返す。The memory allocation execution unit 15 executes the memory allocation operation instruction described in the class file 500. The memory allocation execution unit 15 searches the memory allocation information stored in the memory allocation information storage unit 13 for the memory allocation information corresponding to the memory allocation operation instruction to be executed by the instruction execution unit 14. get. Then, the memory allocation execution unit 1
5 reserves a memory area for the memory area α or β to be allocated from the storage unit 20 based on the acquired memory allocation information, and returns control to the instruction execution unit 14.
【0062】次に、当該プログラム実行装置がJava
(R)クラスファイル500を処理し、メモリ割り当て
選択する動作について説明する。図5は、当該プログラ
ム実行装置がクラスファイル500を処理しメモリ割り
当て選択する動作手順を示すフローチャートである。Next, if the program execution device is Java
The operation of processing the (R) class file 500 and selecting memory allocation will be described. FIG. 5 is a flowchart showing an operation procedure in which the program execution device processes the class file 500 and selects memory allocation.
【0063】図5において、プログラム実行装置はクラ
スファイル500を受け取り、プログラム実行部10に
入力する(ステップS11)。このクラスファイル50
0は、送受信装置5を介したデータ通信によって受信し
てもいいし、システムバス6を介して他の外部装置から
受信してもかまわない。また、クラスファイル500
は、予め記憶装置2に格納されていてもかまわない。な
お、ここでは、一例として上述したように、図3に示し
たJava(R)のソースコードfoo.javaをコ
ンパイルして得られたJava(R)クラスファイル5
00が、プログラム実行部10に入力されるものとす
る。また、図4は上記コンパイルして得られたJava
(R)クラスファイル500の中から、バイトコードB
C部分を抜粋したものである。In FIG. 5, the program execution device receives the class file 500 and inputs it to the program execution unit 10 (step S11). This class file 50
0 may be received by data communication via the transmission / reception device 5, or may be received from another external device via the system bus 6. Also, the class file 500
May be stored in the storage device 2 in advance. Note that, here, as described above as an example, the Java (R) source code foo. Java (R) class file 5 obtained by compiling Java
00 is input to the program execution unit 10. Also, FIG. 4 shows the Java obtained by compiling the above.
(R) Byte code B from class file 500
This is an excerpt of the C part.
【0064】次に、メモリ割り当て操作検出部11は、
クラスファイル500のバイトコードBC列の中から、
動的なメモリ割り当て操作を行う命令を検出する(ステ
ップS12)。図4のバイトコードBCの例では、メモ
リ割り当て操作検出部11は、アドレス1および13に
記載されている「newarray」を動的にメモリ割
り当てを行う命令として検出する。なお、メモリ割り当
て操作検出部11が検出する他の動的にメモリ割り当て
を行う命令としては、新たなインスタンスを生成する
「new」や、新たな配列を生成する「anewarr
ay」および「multianewarray」、ある
いはjava.lang.Stringクラスのインス
タンスを生成する「ldc」等のバイトコードがある。Next, the memory allocation operation detection unit 11
From the bytecode BC string of the class file 500,
An instruction for performing a dynamic memory allocation operation is detected (step S12). In the example of the bytecode BC in FIG. 4, the memory allocation operation detection unit 11 detects “newwarray” described in the addresses 1 and 13 as an instruction for dynamically allocating memory. Note that other instructions for dynamically allocating memory detected by the memory allocation operation detection unit 11 include “new” that creates a new instance and “newwarr” that creates a new array.
ay ”and“ multilane warray ”, or Java. Lang. There is a bytecode such as "ldc" that creates an instance of the String class.
【0065】次に、メモリ割り当て選択部12が、上記
メモリ割り当て操作検出部11が検出した動的なメモリ
割り当て操作命令に対して、記憶部20のメモリ領域α
あるいはβのどちらを割り当てるか選択する。ここで、
メモリ割り当て選択部12が、動的なメモリ割り当て操
作命令に対して割り当てるメモリ領域αあるいはβを選
択するために、以下に述べる手順に基づいて動作する。Next, the memory allocation selecting unit 12 responds to the dynamic memory allocation operation command detected by the memory allocation operation detecting unit 11 in the memory area α of the storage unit 20.
Alternatively, select which of β is to be assigned. here,
The memory allocation selecting unit 12 operates based on the procedure described below in order to select the memory area α or β to be allocated to the dynamic memory allocation operation instruction.
【0066】まず、メモリ割り当て選択部12が割り当
てるメモリ領域αあるいはβを選択する基準は、メモリ
領域αをガーベジコレクション処理の対象となるメモリ
領域およびメモリ領域βをガーベジコレクション処理の
対象とならないメモリ領域として設定される。つまり、
メモリ領域αには、比較的長期間生存する通常のデータ
を保存するために割り当てられ、メモリ領域βには、非
常に短期間しか生存しない局所的(一時的)なデータを
保存するために割り当てられる。そして、メモリ領域β
に格納されるデータの生成消滅の管理は、ガーベジコレ
クション処理に頼らず、メモリ割り当て実行部15およ
び命令実行部14によって明示的に行われる。したがっ
て、非常に寿命の短いデータによってメモリ領域が多数
確保され、またガーベジコレクションによって多数回収
されるという状態を防止できるため、ガーベジコレクシ
ョンによる処理が軽減され、プログラム自体の実行効率
を向上させることが可能となる。First, the criterion for selecting the memory area α or β to be allocated by the memory allocation selecting unit 12 is that the memory area α is a memory area targeted for garbage collection processing and the memory area β is a memory area not targeted for garbage collection processing. Is set as. That is,
The memory area α is allocated to store normal data that survives for a relatively long period of time, and the memory area β is allocated to store local (temporary) data that survives for a very short period of time. To be Then, the memory area β
The management of the generation and disappearance of the data stored in is explicitly performed by the memory allocation execution unit 15 and the instruction execution unit 14 without depending on the garbage collection process. Therefore, it is possible to prevent a situation where a large number of memory areas are secured by extremely short-lived data and a large number of memory areas are collected by garbage collection, so the processing by garbage collection is reduced and the execution efficiency of the program itself can be improved. Becomes
【0067】メモリ割り当て選択部12が、このような
基準でメモリ割り当ての選択を行うためには、割り当て
るデータの生存期間を解析しなければならない。そのた
め、メモリ割り当て選択部12は、クラスファイル50
0に対してデータフロー解析を実施することにより、デ
ータの生存区間の解析を行う。このデータフロー解析に
関しては、例えば、“A.V.エイホ、R.セシィ、
J.D.ウルマン共著、「コンパイラ II −原理・
技法・ツール−」、株式会社サイエンス社、1990年
10月10日初版発行(第741頁〜第772頁「1
0.5 大域的データの流れ解析の概要」および「1
0.6 データの流れ方程式の反復解法」)”(以下、
従来技術文献2とする)に詳述されている。In order for the memory allocation selecting unit 12 to select the memory allocation based on such a criterion, it is necessary to analyze the lifetime of the data to be allocated. Therefore, the memory allocation selecting unit 12 uses the class file 50
By performing a data flow analysis on 0, the live range of the data is analyzed. Regarding this data flow analysis, for example, "AV Eiho, R. Cesi,
J. D. Ullman, "Compiler II-Principle
Techniques / Tools ", Science Co., Ltd., October 10, 1990, first edition issued (pages 741 to 772," 1.
0.5 Overview of Global Data Flow Analysis ”and“ 1.
0.6 Iterative solution of the data flow equation ")" (hereinafter,
Prior art document 2).
【0068】まず、メモリ割り当て選択部12は、クラ
スファイル500のバイトコードBC列をレジスタ型の
代入式の表記に変換する(ステップS13)。図6
(a)は、メモリ割り当て選択部12が、図4で示した
クラスファイル500のバイトコードBC列を、レジス
タ型の代入式501の表記および後述する参照可能性の
リスト502に変換した一例であり、図6(b)は、D
U連鎖情報503に変換した一例である。First, the memory allocation selecting unit 12 converts the bytecode BC sequence of the class file 500 into a notation of a register type substitution expression (step S13). Figure 6
(A) is an example in which the memory allocation selecting unit 12 converts the bytecode BC sequence of the class file 500 shown in FIG. 4 into a notation of a register-type assignment expression 501 and a reference possibility list 502 described later. , FIG. 6B shows D
This is an example of conversion into U chain information 503.
【0069】図6(a)において、Java(R)仮想
マシンは、ある特定のメソッドの実行中に、当該メソッ
ド内でのみ有効な一時的な記憶領域として、オペランド
スタックおよびローカル変数と呼ばれる記憶領域を持
つ。ここで、一番底にあたるオペランドスタックをO
1、二番目をO2、以下O3、O4、…とする。また、
当該メソッドがn個のローカル変数を持つとして、それ
ぞれL0、L1、…、L(n−1)とする。例えば、ア
ドレス0のバイトコードBCによる「iconst_
2」命令に対しては、オペランドスタックが空の状態か
らオペランドスタックに定数2が積まれるので、レジス
タ型代入式501では一番底であるオペランドスタック
O1に2が代入(O1=2)されることになる。In FIG. 6A, the Java (R) virtual machine has a storage area called an operand stack and a local variable as a temporary storage area that is valid only in the method during execution of a specific method. have. Here, the bottom operand stack is O
The first and second are O2, hereinafter O3, O4, .... Also,
Let L0, L1, ..., L (n-1), assuming that the method has n local variables. For example, "iconst_ by the bytecode BC at address 0
For the "2" instruction, since the constant 2 is stacked on the operand stack from the state where the operand stack is empty, 2 is assigned (O1 = 2) to the operand stack O1 which is the bottom in the register type assignment expression 501. It will be.
【0070】また、アドレス1のバイトコードBCによ
る「newarray int」命令に対しては、オペ
ランドスタックから1つ整数値が下ろされ(ここでオペ
ランドスタックO1は消滅する)、レジスタ型代入式5
01では新たなメモリ領域(ここではメモリ領域Aとす
る)を確保し、確保されたメモリ領域Aへの参照がオペ
ランドスタックO1に積まれる(O1=A)。これらを
まとめると、レジスタ型代入式501では「new
A、O1=A」の2命令となる。ここで、演算子「ne
w」は、新たなメモリ領域Aの確保することを示してい
る。For the "newlayray int" instruction with the byte code BC at address 1, one integer value is lowered from the operand stack (the operand stack O1 disappears here), and the register type assignment expression 5
In 01, a new memory area (here, the memory area A) is secured, and a reference to the secured memory area A is stacked on the operand stack O1 (O1 = A). To summarize these, in the register-type assignment expression 501, “new
A, O1 = A ”. Here, the operator "ne
“W” indicates that a new memory area A is secured.
【0071】次に、アドレス3のバイトコードBCによ
る「astore_1」命令に対しては、オペランドス
タックから1つ参照値が下ろされ、レジスタ型代入式5
01ではローカル変数の1番(L0)に代入されるの
で、「L0=O1、O1=φ」の2命令となる。ここ
で、「O1=φ」はオペランドスタックO1の持つ値が
無効になったことを示すもので、必ずしも必要な代入式
ではないが、データフロー解析の動作を簡略化するため
に明示的に挿入するものである。Next, for the "store_1" instruction by the byte code BC at address 3, one reference value is lowered from the operand stack, and the register type assignment expression 5
In 01, since it is substituted into the local variable No. 1 (L0), it becomes two instructions of "L0 = O1, O1 = φ". Here, “O1 = φ” indicates that the value held by the operand stack O1 is invalid, and is not necessarily a necessary assignment expression, but it is explicitly inserted to simplify the operation of the data flow analysis. To do.
【0072】また、アドレス7のバイトコードBCによ
る「iastore」命令に対しては、この時点で積ま
れているオペランドスタックO1〜O3から2つの整数
値と1つの参照値が下ろされ、レジスタ型代入式501
では配列への要素の代入が行われるので、「O1[O
2]=O3、O1=φ、O2=φ、O3=φ」の4命令
となる(「O1=O2=O3=φ」は「O1=φ、O2
=φ、O3=φ」を意味するものとし、a[b]=cは
配列要素への代入を表している)。Further, for the "iastore" instruction with the byte code BC at address 7, two integer values and one reference value are lowered from the operand stacks O1 to O3 that are stacked at this point, and register type substitution is performed. Formula 501
Then, since the elements are assigned to the array, "O1 [O
2] = O3, O1 = φ, O2 = φ, O3 = φ ”(“ O1 = O2 = O3 = φ ”means“ O1 = φ, O2
= [Phi], O3 = [phi] ", and a [b] = c represents substitution into array elements).
【0073】また、アドレス13のバイトコードBCに
よる「newarray int」命令に対しては、オ
ペランドスタックから1つ整数値が下ろされ(ここでオ
ペランドスタックO1は消滅する)、レジスタ型代入式
501では新たなメモリ領域(ここではメモリ領域Bと
する)を確保し、確保されたメモリ領域Bへの参照がオ
ペランドスタックO1に積まれる(O1=B)。これら
をまとめると、レジスタ型代入式501では「new
B、O1=B」の2命令となる。このような変換動作を
繰り返すことによって、メモリ割り当て選択部12は、
クラスファイル500のバイトコードBC列をレジスタ
型の代入式501の表記に変換する。For the "newlayray int" instruction with the byte code BC at the address 13, one integer value is lowered from the operand stack (the operand stack O1 disappears here), and the register type assignment expression 501 has a new value. A memory area (here, memory area B) is secured, and a reference to the secured memory area B is stacked on the operand stack O1 (O1 = B). To summarize these, in the register-type assignment expression 501, “new
B, O1 = B ”. By repeating such a conversion operation, the memory allocation selecting unit 12
The bytecode BC string of the class file 500 is converted into the notation of the register type substitution expression 501.
【0074】なお、従来のデータフロー解析技術は、ネ
イティブのマシン命令形式に適用することを主眼として
いるため、レジスタへの代入操作が基本となっている。
一方、Java(R)クラスファイルのプログラム実行
装置(Java(R)仮想マシン)は、スタック操作を
基本とするスタックマシンである。したがって、上記ス
テップS13の処理によって、スタック操作をレジスタ
操作相当の形式に変換するため、従来のデータフロー解
析技術の適用が容易となる。しかしながら、このような
効果を期待しない場合、必ずしも上記ステップS13の
処理はなくてもかまわない。例えば、バイトコードBC
列のスタック操作に対し、直接データフロー解析を実施
するような構成にしても、同様の機能を提供することが
できることは言うまでもない。Since the conventional data flow analysis technique is mainly applied to the native machine instruction format, it is basically assigned to the register.
On the other hand, the program execution device of a Java (R) class file (Java (R) virtual machine) is a stack machine based on stack operation. Therefore, by the process of step S13, the stack operation is converted into a format equivalent to the register operation, so that it becomes easy to apply the conventional data flow analysis technique. However, if such an effect is not expected, the process of step S13 may not necessarily be performed. For example, bytecode BC
It goes without saying that the same function can be provided even if the configuration is such that the data flow analysis is directly performed for the stack operation of the columns.
【0075】次に、メモリ割り当て選択部12は、上記
ステップS13で得られたレジスタ型の代入式501に
対して、メソッド単位でエイリアス解析を行う(ステッ
プS14)。このエイリアス解析の手法は、上記従来技
術文献2の第790頁〜第806頁「10.8 別名の
取扱い」に詳述されている。このエイリアス解析を実行
することによって、バイトコードBC列の各行に対し
て、どのレジスタがどのメモリ領域を指す可能性がある
かを示すことができ、その解析結果として参照可能性の
リスト502が得られる。Next, the memory allocation selecting unit 12 performs alias analysis on a method-by-method basis with respect to the register-type assignment expression 501 obtained at step S13 (step S14). The method of this alias analysis is described in detail in the above-mentioned Prior Art Document 2, pp. 790 to 806, "10.8 Handling of Aliases". By executing this alias analysis, it is possible to indicate for each row of the bytecode BC column which register may point to which memory area, and as a result of the analysis, a list 502 of reference possibilities is obtained. To be
【0076】図6(a)において、アドレス1のバイト
コードBCによる「newarray」命令実行後は、
参照可能性のリスト502が「O1=A」であり、オペ
ランドスタックO1がメモリ領域Aを指している。ま
た、アドレス4のバイトコードBCによる「aload
_1」命令実行後は、参照可能性のリスト502が「L
0=A」であり、オペランドスタックO1およびローカ
ル変数L0がメモリ領域Aを指している。このように、
Java(R)仮想マシンにおいて使用されるデータ
は、基本的に基本データ型および参照型であり、この参
照型に対する操作に関して専用のバイトコードが割り当
てられているため、例えば「aload」および「as
tore」等の参照型の操作命令に着目すれば、エイリ
アス解析は比較的容易に実現できる。In FIG. 6A, after the execution of the "newarray" instruction by the bytecode BC at address 1,
The reference possibility list 502 is “O1 = A”, and the operand stack O1 points to the memory area A. In addition, “aload” by the bytecode BC of address 4
After execution of the "_1" instruction, the reference possibility list 502 is "L".
0 = A ”, and the operand stack O1 and the local variable L0 point to the memory area A. in this way,
The data used in the Java (R) virtual machine is basically a basic data type and a reference type, and a dedicated bytecode is assigned for an operation on this reference type. Therefore, for example, "aload" and "as"
If attention is paid to a reference type operation instruction such as “tore”, the alias analysis can be realized relatively easily.
【0077】次に、メモリ割り当て選択部12は、上記
ステップS14で得られたエイリアス解析の結果に基づ
いて、DU(Define−Use:定義−使用)連鎖
情報を得る(ステップS15)。このDU連鎖情報を取
得する手法については、上記従来技術文献2の第769
頁〜第772頁「生きている変数の解析」に詳述されて
いる。DU連鎖情報は、定義(D)が行われる箇所を表
すアドレスに対して、その定義が使用(U)される全て
の箇所のアドレスのリストとして表現される。Next, the memory allocation selecting unit 12 obtains DU (Define-Use: definition-use) chain information based on the result of the alias analysis obtained in step S14 (step S15). For the method of acquiring the DU chain information, refer to No. 769 of the above-mentioned Prior Art Document 2.
For details, see page 772-Analysis of Living Variables. The DU chain information is expressed as a list of addresses of all places where the definition is used (U) with respect to the address representing the place where the definition (D) is performed.
【0078】図6(b)の例では、メモリ領域Aおよび
メモリ領域Bへの参照に関するDU連鎖情報503を示
している。メモリ領域Aの参照に関するDU連鎖情報5
03は、新たなメモリ領域Aの確保が行われるアドレス
1が定義のアドレスとして表現され、それ以降のアドレ
スに対してメモリ領域Aが使用される箇所のアドレスが
表現されている。同様に、メモリ領域Bの参照に関する
DU連鎖情報503は、新たなメモリ領域Bの確保が行
われるアドレス13が定義のアドレスとして表現され、
それ以降のアドレスに対してメモリ領域Bが使用される
箇所のアドレスが表現されている。In the example of FIG. 6B, the DU chain information 503 regarding the references to the memory areas A and B is shown. DU chain information 5 regarding reference to memory area A
In 03, an address 1 at which a new memory area A is secured is expressed as a defined address, and an address of a location where the memory area A is used for subsequent addresses is expressed. Similarly, in the DU chain information 503 related to the reference of the memory area B, the address 13 at which a new memory area B is secured is expressed as a defined address,
The addresses of the locations where the memory area B is used are expressed for the subsequent addresses.
【0079】次に、メモリ割り当て選択部12は、上記
ステップS12で検出されたメモリ割り当て操作命令を
所定の順番で1つ取得する(ステップS16)。Next, the memory allocation selecting unit 12 acquires one memory allocation operation command detected in the above step S12 in a predetermined order (step S16).
【0080】そして、メモリ割り当て選択部12は、上
記ステップS16で所得したメモリ割り当て操作命令に
対して、当該メモリ割り当て操作によって割り当てられ
るメモリ領域に格納されるデータの生存区間の解析を行
う(ステップS17)。この生存区間を解析する方法
は、上記ステップS15で得られたDU連鎖情報を用い
る。すなわち、当該メモリ割り当て操作によって割り当
てられるメモリ領域に対してDU連鎖をたどり、当該メ
モリ割り当て操作命令のアドレスから最後に使用されて
いるアドレスまでが生存区間となる。Then, the memory allocation selecting unit 12 analyzes the live range of the data stored in the memory area allocated by the memory allocation operation with respect to the memory allocation operation command obtained in step S16 (step S17). ). The method of analyzing this live range uses the DU chain information obtained in step S15. That is, the DU chain is traced to the memory area allocated by the memory allocation operation, and the live range extends from the address of the memory allocation operation instruction to the last used address.
【0081】図6(b)のDU連鎖情報503では、ア
ドレス1のバイトコードBCのメモリ割り当て操作命令
によって定義されるメモリ領域Aが使用されるアドレス
は、アドレス1からアドレス35までであり、メモリ領
域Aの生存期間は、アドレス1〜35である。また、ア
ドレス13のバイトコードBCのメモリ割り当て操作命
令によって定義されるメモリ領域Bが使用されるアドレ
スは、アドレス13からアドレス47までであり、メモ
リ領域Bの生存期間は、アドレス13〜47である。In the DU chain information 503 of FIG. 6 (b), the memory area A defined by the memory allocation operation instruction of the byte code BC of address 1 is used from address 1 to address 35. The lifetime of the area A is addresses 1 to 35. Further, the addresses where the memory area B defined by the memory allocation operation instruction of the bytecode BC of the address 13 is used are from the address 13 to the address 47, and the lifetime of the memory area B is the addresses 13 to 47. .
【0082】次に、メモリ割り当て選択部12は、上記
ステップS17で解析した生存区間が、当該メモリ割り
当て操作が実行されるメソッドの内部で閉じているか否
かを判定する(ステップS18)。このメモリ割り当て
選択部12の判定方法は、当該メモリ領域への参照値の
生存区間が、メソッド内部に完全に含まれており、かつ
生存区間の途中で他メソッドの呼出しがなく、かつメソ
ッドの終了時点で当該領域への参照値の別名となってい
るレジスタがオペランドスタックおよびローカル変数以
外にはない場合、「メソッドの内部で閉じている」と判
断される。これは、上記ステップS17で求められる生
存区間が、メソッド内に限定された範囲で行われたデー
タフロー解析に基づいたDU連鎖情報によるものであ
り、その他のメソッドによる値の使用が考慮されていな
いためである。したがって、この解析は、他メソッドの
呼出し中や、当該メソッドの実行終了後に値が使用され
る可能性を排除できないため、ここでは生存区間の途中
で他メソッドの呼出しがなく、かつメソッドの終了時点
で当該領域への参照値の別名となっているレジスタがオ
ペランドスタックおよびローカル変数以外にはないとい
う判定条件を付加している。Next, the memory allocation selecting unit 12 determines whether or not the live range analyzed in step S17 is closed inside the method in which the memory allocation operation is executed (step S18). The determination method of the memory allocation selecting unit 12 is that the live range of the reference value to the memory area is completely included in the method, no other method is called in the middle of the live range, and the method ends. If there is no register other than the operand stack and the local variable that is the alias of the reference value to the area at this point, it is determined to be “closed inside the method”. This is because the live range obtained in step S17 is based on the DU chain information based on the data flow analysis performed within the range limited in the method, and the use of the value by other methods is not considered. This is because. Therefore, this analysis cannot exclude the possibility that the value will be used during the invocation of another method or after the end of the execution of the method. In addition, a condition is added that there is no register other than the operand stack and the local variable that is an alias of the reference value to the area.
【0083】そして、メモリ割り当て選択部12は、生
存区間がメソッド内部で閉じている場合、当該メモリ割
り当て操作命令を、非常に短期間しか生存しない局所的
(一時的)なデータ(すなわち、ガーベジコレクション
の対象とならないデータ)を保存するためメモリ領域β
に割り当てるという決定を行い、メモリ割り当て情報記
憶部13に上記メモリ割り当て情報として記録し(ステ
ップS19)、次のステップS21に処理を進める。一
方、メモリ割り当て選択部12は、生存区間がメソッド
内部で閉じていない場合、当該メモリ割り当て操作命令
を、比較的長期間生存する通常のデータ(すなわち、ガ
ーベジコレクションの対象となるデータ)を保存するた
めメモリ領域αを割り当てるという決定を行い、メモリ
割り当て情報記憶部13に上記メモリ割り当て情報とし
て記録し(ステップS20)、次のステップS21に処
理を進める。Then, when the live range is closed inside the method, the memory allocation selecting unit 12 executes the memory allocation operation instruction with local (temporary) data (that is, garbage collection) that survives for a very short period. Memory area β to store data that is not subject to
Memory allocation information is stored in the memory allocation information storage unit 13 as the memory allocation information (step S19), and the process proceeds to the next step S21. On the other hand, when the live range is not closed inside the method, the memory allocation selecting unit 12 stores the memory allocation operation instruction as normal data that survives for a relatively long period of time (that is, data that is the target of garbage collection). Therefore, it is determined that the memory area α is to be allocated, recorded in the memory allocation information storage unit 13 as the memory allocation information (step S20), and the process proceeds to the next step S21.
【0084】図6(a)および(b)の例では、アドレ
ス1のメモリ割り当て操作によって割り当てられるメモ
リ領域Aの生存区間は、DU連鎖情報503に示すよう
にメソッド内に完全に含まれており、途中で他メソッド
を呼出すコードもなく、さらにメソッド終了時点でメモ
リ領域Aを指すレジスタはローカル変数L0のみであ
る。すなわち、メモリ領域Aの生存期間は、メソッド内
で閉じているのでメモリ領域βへの割り当てを決定す
る。これは、当該メソッドの実行が終了されるととも
に、メモリ領域Aを解放しても問題は発生しないという
ことを示している。したがって、命令実行部14が、メ
ソッドが終了する時点(すなわち、「return」命
令が実行される時点)でメモリ領域βを全て解放すると
いう動作を行えば、メモリ領域βをガーベジコレクショ
ンの対象外としても、データの生成消滅を完全に管理す
ることができる。In the example of FIGS. 6A and 6B, the live range of the memory area A allocated by the memory allocation operation of the address 1 is completely included in the method as shown in the DU chain information 503. There is no code for calling another method on the way, and the register pointing to the memory area A at the end of the method is only the local variable L0. That is, since the lifetime of the memory area A is closed in the method, the allocation to the memory area β is determined. This indicates that the problem does not occur even if the memory area A is released when the execution of the method is completed. Therefore, if the instruction execution unit 14 performs an operation of releasing all the memory area β at the time when the method ends (that is, at the time when the “return” instruction is executed), the memory area β is excluded from the target of garbage collection. Also, the generation and disappearance of data can be completely controlled.
【0085】一方、アドレス13のメモリ割り当て操作
によって割り当てられるメモリ領域Bの生存区間も、D
U連鎖情報503に示すようにメソッド内に完全に含ま
れている。しかし、メソッド終了時点においてメモリ領
域Bを指すレジスタとして、参照の可能性リスト502
に「<Field foo.b [I>=B」、すなわ
ちfooクラスの静的フィールドが残っており、メモリ
領域Bの生存期間は、メソッド内で閉じていないのでメ
モリ領域αへの割り当てを決定する。これは、静的フィ
ールドに格納された値がメソッドの実行が終了しても消
滅せず、その後のプログラム実行により再び値が使用さ
れる可能性を排除できないため、メソッドが終了する時
点で解放されるメモリ領域βを割り当てることはできな
いためである。On the other hand, the live range of the memory area B allocated by the memory allocation operation of the address 13 is also D
It is completely included in the method as shown in U-chain information 503. However, as a register pointing to the memory area B at the end of the method, the reference possibility list 502
"<Field foo.b [I> = B", that is, the static field of the foo class remains, and the lifetime of the memory area B is not closed in the method, so the allocation to the memory area α is determined. . This is because the value stored in the static field does not disappear even when the method execution ends, and the possibility that the value will be used again by the subsequent program execution cannot be excluded, so it is released when the method ends. This is because the memory area β to be allocated cannot be allocated.
【0086】なお、上記ステップS19あるいはS20
でメモリ割り当て情報記憶部13に記録するメモリ割り
当て情報は、例えば、図7に示すように上記メモリ割り
当て操作命令の位置を特定する識別子(クラス名、引数
情報を含むメソッド名、およびアドレスの組等)をキー
とし、当該メモリ割り当て操作命令によって割り当てる
べきメモリ領域の選択結果をレコードとして、これらの
組が記録される。Incidentally, the above step S19 or S20.
The memory allocation information recorded in the memory allocation information storage unit 13 by means of, for example, an identifier (class name, a method name including argument information, a set of addresses, etc.) for specifying the position of the memory allocation operation instruction as shown in FIG. ) As a key, and the selection result of the memory area to be allocated by the memory allocation operation instruction is used as a record, and these sets are recorded.
【0087】図5に戻り、メモリ割り当て選択部12
は、上記ステップS12で検出した全てのメモリ割り当
て操作命令に対して、未処理のメモリ割り当て操作命令
が残っているか否か判断する(ステップS21)。そし
て、メモリ割り当て選択部12は、上記ステップS21
で未処理のメモリ割り当て操作命令が残っている場合、
上記ステップS16に戻って処理を継続し、未処理のメ
モリ割り当て操作命令が残っていない場合、当該フロー
を終了する。このように、メモリ割り当て選択部12
は、メモリ割り当て情報をメモリ割り当て情報記憶部1
3に記録する。Returning to FIG. 5, the memory allocation selecting unit 12
Determines whether or not there is an unprocessed memory allocation operation instruction with respect to all the memory allocation operation instructions detected in step S12 (step S21). Then, the memory allocation selecting unit 12 performs the above step S21.
If there are unprocessed memory allocation operation instructions in
Returning to step S16, the processing is continued, and when there is no unprocessed memory allocation operation instruction, the flow ends. In this way, the memory allocation selecting unit 12
Stores the memory allocation information in the memory allocation information storage unit 1
Record in 3.
【0088】次に、命令実行部14およびメモリ割り当
て実行部15の動作について説明する。命令実行部14
は、上述したように入力したクラスファイル500に記
述されたバイトコード列を実行する。そのとき、命令実
行部14は、実行すべきバイトコードが上述したメモリ
割り当て操作命令、すなわち「new」、「newar
ray」、「anewarray」、「multian
ewarray」、および「ldc」(CONSTAN
T_String)命令等の場合、メモリ割り当て実行
部15を呼び出す。また、命令実行部14は、実行すべ
きバイトコードがメソッドの終了、すなわち「retu
rn」命令等であった場合、メソッドの終了処理ととも
に、上述の通り記憶部20のメモリ領域βに対して解放
処理を行う。Next, the operations of the instruction executing section 14 and the memory allocation executing section 15 will be described. Instruction execution unit 14
Executes the bytecode string described in the class file 500 input as described above. At that time, the instruction execution unit 14 determines that the bytecode to be executed is the memory allocation operation instruction described above, that is, “new”, “newar”.
"ray", "anewarray", "multian"
"ewarray", and "ldc" (CONSTAN
In the case of a T_String) instruction or the like, the memory allocation execution unit 15 is called. Further, the instruction execution unit 14 determines that the bytecode to be executed is the end of the method, that is, “retu
In the case of the "rn" instruction or the like, the release processing is performed on the memory area β of the storage unit 20 as described above, together with the method termination processing.
【0089】メモリ割り当て実行部15は、命令実行部
14によって上述したメモリ割り当て操作命令に基づい
て呼び出されると、当該メモリ割り当て命令の位置(ク
ラス名、引数情報を含むメソッド名、およびアドレスの
組等)をキーとしてメモリ割り当て情報記憶部13を検
索し、当該メモリ割り当て命令に対応した、割り当てる
べきメモリ領域αあるいはβのレコードを取得する。そ
して、メモリ割り当て実行部15は、取得されたレコー
ドの内容が「メモリ領域α」であった場合、メモリ領域
αの中から必要なメモリ領域を確保し、当該バイトコー
ド命令に基づいたメモリ割り当て操作を行う。一方、メ
モリ割り当て実行部15は、取得されたレコードの内容
が「メモリ領域β」であった場合、メモリ領域βの中か
ら、必要なメモリ領域を確保し、当該バイトコード命令
に基づいたメモリ割り当て操作を行う。そして、メモリ
割り当て実行部15は、それぞれのメモリ領域αあるい
はβに対するメモリ割り当て操作結果として、命令実行
部14に制御を戻す。When the memory allocation execution unit 15 is called by the instruction execution unit 14 based on the above-mentioned memory allocation operation command, the position of the memory allocation command (class name, method name including argument information, and set of addresses, etc.). ) As a key, the memory allocation information storage unit 13 is searched, and the record of the memory area α or β to be allocated corresponding to the memory allocation instruction is acquired. Then, when the content of the acquired record is the “memory area α”, the memory allocation execution unit 15 secures a necessary memory area from the memory area α and performs the memory allocation operation based on the bytecode instruction. I do. On the other hand, when the content of the acquired record is the “memory area β”, the memory allocation execution unit 15 secures a necessary memory area from the memory area β and allocates the memory based on the bytecode instruction. Do the operation. Then, the memory allocation execution unit 15 returns the control to the instruction execution unit 14 as the result of the memory allocation operation for each memory area α or β.
【0090】このように、当該プログラム実行装置によ
れば、寿命が非常に短いデータに対するメモリ割り当て
操作を検出し、このデータを一時的なデータ専用のメモ
リ領域βに割り当てることができる。これにより、寿命
の短いデータの頻繁な生成消滅によってメモリ領域が乱
されて、ガーベジコレクションの実行に負荷がかかるこ
とを防止できるため、プログラムによる動的なメモリ領
域の管理にかかる負荷を軽減させることができ、プログ
ラムの実行効率を向上させることが可能となる。As described above, according to the program execution device, it is possible to detect the memory allocation operation for the data having a very short life and allocate the data to the temporary memory area β dedicated to the data. This can prevent the memory area from being disturbed by the frequent generation and disappearance of short-lived data, which imposes a load on the execution of garbage collection, thus reducing the load on the program for dynamically managing the memory area. Therefore, it is possible to improve the execution efficiency of the program.
【0091】なお、本実施例において、ガーベジコレク
ションの対象とならないメモリ領域βに非常に短期間し
か生存しない局所的(一時的)なデータを保存するため
に割り当てたが、非常に長期間生存する、あるいはプロ
グラムの実行終了時点まで消滅しないデータを保存する
ためにメモリ領域βを使用するという構成にしてもかま
わない。この場合、ガーベジコレクションによって回収
されそうにないデータが、ガーベジコレクションの探索
対象から外されるため、ガーベジコレクションにかかる
負荷を低減し、プログラムの実行効率を向上させること
ができる。In this embodiment, the memory area β which is not the target of the garbage collection is allocated to store the local (temporary) data that survives for a very short period, but it survives for a very long period. Alternatively, the memory area β may be used to store data that does not disappear until the end of execution of the program. In this case, the data that is unlikely to be collected by the garbage collection is excluded from the search target of the garbage collection, so that the load on the garbage collection can be reduced and the execution efficiency of the program can be improved.
【0092】また、本実施例において、データフロー解
析および生存区間解析はメソッド内に限定して行った
が、既に公知の手続き間データの流れ解析を行うことに
より、メソッドを越えた生存区間を解析して、メモリ領
域の選択の判定条件としてもかまわない。Further, in the present embodiment, the data flow analysis and the live range analysis were limited to the method, but the live range beyond the method was analyzed by performing the already known inter-procedural data flow analysis. Then, it may be used as a judgment condition for selecting the memory area.
【0093】さらに、本実施例において、メモリ割り当
て操作命令の一例として、「invokevirtua
l」命令等のメソッド呼出し命令をメモリ割り当て操作
の対象として扱うこともできる。一般的なJava
(R)仮想マシンの実装では、メソッド呼出し命令であ
る「invokevirtual」、「invokei
nterface」、「invokespecia
l」、および「invokestatic」命令等によ
って新たなメソッドが呼出されると、メソッドの実行管
理用のワークエリアとして新たなメモリ(Java
(R)フレーム)を割り当てるようになっている。した
がって、例えば、上記メソッド呼出し命令によって確保
されるJava(R)フレーム領域を、必ずJava
(R)フレーム専用のメモリ領域に割り当てるという構
成も可能である。この場合、メソッド呼出しによってメ
モリ領域が乱されて、ガーベジコレクションの実行に負
荷がかかることを防止できるため、プログラムの実行効
率を向上させることが可能となる。Further, in the present embodiment, as an example of the memory allocation operation instruction, "invokevirtua"
It is also possible to treat a method call instruction such as an "l" instruction as a target of a memory allocation operation. General Java
(R) In the implementation of the virtual machine, “invokevirtual” and “invokekei” which are method call instructions.
interface "," invokespecia "
l ”and“ invokestatic ”command, a new method is called, and a new memory (Java) is used as a work area for method execution management.
(R) frame). Therefore, for example, the Java (R) frame area secured by the method call instruction is always Java.
A configuration is also possible in which the memory area is dedicated to the (R) frame. In this case, it is possible to prevent the memory area from being disturbed by the method invocation and to impose a load on the execution of the garbage collection, so that it is possible to improve the execution efficiency of the program.
【0094】また、本実施例において、メモリ割り当て
情報記憶部13は、メモリ割り当て操作命令をキーと
し、割り当てるべきメモリ領域をレコードとしたデータ
ベースによって構成したが、メモリ割り当て情報記憶部
13にクラスファイル500の情報を全て記憶させても
かまわない。このような構成の場合には、割り当てるべ
きメモリ領域毎に異なるメモリ割り当て操作命令を適用
することができる。例えば、通常のメモリ領域αに割り
当てる「new」命令に対し、特殊なメモリ領域βに割
り当てる「new_b」命令を新設し、メモリ割り当て
選択部12がクラスファイル500に含まれるバイトコ
ード列を直接書換えてメモリ割り当て情報記憶部13に
書き込むことで実現できる。Further, in the present embodiment, the memory allocation information storage unit 13 is constituted by the database in which the memory allocation operation command is a key and the memory area to be allocated is a record. All the information in the above may be stored. In the case of such a configuration, different memory allocation operation instructions can be applied to each memory area to be allocated. For example, a new instruction "new_b" to be assigned to the special memory area β is newly provided for the "new" instruction to be assigned to the normal memory area α, and the memory allocation selecting unit 12 directly rewrites the bytecode string included in the class file 500. It can be realized by writing in the memory allocation information storage unit 13.
【0095】また、本実施例において、メモリ割り当て
操作検出部11およびメモリ割り当て選択部12におけ
る各処理は、Java(R)クラスファイルのロード時
に行われるものとしたが、この処理を当該メモリ割り当
て操作を含むメソッドの初回もしくは特定回目の呼出し
時に行われるように構成してもかまわない。この構成に
よれば、あるメソッドが一定の閾値を越えた回数、例え
ば10回目に呼ばれた時にメモリ割り当て選択部12に
よるメモリ領域の選択を行うようにすることにより、頻
繁に呼出される、すなわちプログラムの実行性能に大き
く寄与する部分のメモリ割り当てのみを重点的に選択さ
せることができる。したがって、より低いメモリ割り当
て選択部12の負荷で、より効率的なメモリ領域の割り
当てを行うことが可能となる。Further, in the present embodiment, each processing in the memory allocation operation detecting section 11 and the memory allocation selecting section 12 is supposed to be carried out at the time of loading the Java (R) class file. It may be configured so that it is performed at the first or specific time of calling a method including. According to this configuration, the method is frequently called by causing the memory allocation selecting unit 12 to select the memory area when a certain method exceeds the predetermined threshold value, for example, when the method is called ten times. It is possible to select only the memory allocation of the portion that greatly contributes to the execution performance of the program. Therefore, it is possible to more efficiently allocate the memory area with a lower load of the memory allocation selecting unit 12.
【0096】(第2の実施形態)次に、既に公知の組込
みクラスファイルを解析することによって得られるメモ
リ割り当ての選択方法を記述した選択補佐情報を用い
て、上述した第1の実施形態よりさらに効率的に正確な
メモリ領域の割り当てを行う第2の実施形態に係るプロ
グラム実行装置について説明する。なお、第2の実施形
態に係るプログラム実行装置のハード構成については、
上述した図1で説明した第1の実施形態と同様であるの
で、ここでは詳細な説明を省略する。(Second Embodiment) Next, by using the selection assistant information describing the selection method of the memory allocation obtained by analyzing the already-known embedded class file, further than the above-described first embodiment. A program execution device according to the second embodiment that efficiently and accurately allocates memory areas will be described. The hardware configuration of the program execution device according to the second embodiment is as follows.
Since it is the same as the first embodiment described in FIG. 1 described above, detailed description thereof will be omitted here.
【0097】次に、第2の実施形態に係るプログラム実
行装置の機能構成について説明する。図8は、本発明の
プログラムを当該プログラム実行装置で実行することに
よって形成される機能構成の一例を示す機能ブロック図
である。なお、上記プログラムを適当な記憶媒体に包含
させることも可能であり、上記プログラムを他の処理装
置にインストールすることによって、同様の機能を移植
することも可能である。Next, the functional configuration of the program execution device according to the second embodiment will be described. FIG. 8 is a functional block diagram showing an example of a functional configuration formed by executing the program of the present invention by the program execution device. The program can be included in an appropriate storage medium, and the same function can be ported by installing the program in another processing device.
【0098】図8において、プログラム実行装置は、第
1の実施形態で説明したプログラム実行装置のプログラ
ム実行部10に選択補佐情報記憶部16を追加し、記憶
部20にプログラム実行部10が実行する過程で必要と
なる記憶領域としてメモリ領域γの構成が追加されてい
る。また、プログラム実行部10へは、予め組込みクラ
スファイル600が入力している。この選択補佐情報記
憶部16は、予め組込みクラスファイル600を解析す
ることによってメモリ割り当ての選択方法を記述した後
述する選択補佐情報を作成し記憶する。他の機能ブロッ
クについては、上述した第1の実施形態と同様であるの
で、同一ブロックには同一の参照符号を付して、詳細な
説明は省略する。In FIG. 8, the program execution apparatus adds the selection assistant information storage unit 16 to the program execution unit 10 of the program execution apparatus described in the first embodiment, and the program execution unit 10 executes the storage unit 20. The configuration of the memory area γ is added as a storage area required in the process. Further, the built-in class file 600 is input to the program execution unit 10 in advance. The selection assistant information storage unit 16 creates and stores the selection assistant information, which will be described later, which describes the selection method of memory allocation by analyzing the embedded class file 600 in advance. The other functional blocks are the same as those in the first embodiment described above, and therefore, the same blocks are designated by the same reference numerals and detailed description thereof will be omitted.
【0099】まず、当該プログラム実行装置の選択補佐
情報記憶部16が組込みクラスファイル600を処理
し、選択補佐情報を作成する動作について説明する。図
9は、選択補佐情報記憶部16が組込みクラスファイル
600を処理する動作を示すフローチャートである。な
お、選択補佐情報記憶部16が組込みクラスファイル6
00を処理する動作は、予め後述するメモリ割り当て選
択する動作の前に処理される。First, the operation of the selection assistant information storage unit 16 of the program execution apparatus processing the built-in class file 600 to create the selection assistant information will be described. FIG. 9 is a flowchart showing the operation of the selection assistant information storage unit 16 processing the embedded class file 600. Note that the selection assistant information storage unit 16 stores the embedded class file 6
The operation of processing 00 is processed before the operation of selecting memory allocation which will be described later.
【0100】図9において、プログラム実行部10に組
込みクラスファイル600が入力する(ステップS3
1)。この組込みクラスファイル600は、1つまたは
複数の固定のクラスファイルによって構成される。ここ
での固定のクラスファイルとは、プログラム実行装置が
いかなるプログラムを実行する場合においても必ずロー
ドされる(あるいはロードしても差し支えない)クラス
ファイルであり、Java(R)実行環境におけるクラ
スライブラリとして捉えられるものである。当該実施形
態における組込みクラスファイル600は、Java
(R)言語の設計に密接に関係する基本的なクラスを提
供するjava.langパッケージに含まれるクラス
ファイルとする。なお、典型的には、組込みクラスファ
イル600は、予めプログラム実行装置に初期設定され
たり、外部から取得することによって記憶装置2に格納
されている。In FIG. 9, the embedded class file 600 is input to the program execution unit 10 (step S3).
1). The built-in class file 600 is composed of one or more fixed class files. The fixed class file here is a class file that is always loaded (or may be loaded) when the program execution device executes any program, and as a class library in the Java (R) execution environment. It is something that can be captured. The embedded class file 600 in this embodiment is Java
Java that provides basic classes that are closely related to the design of the (R) language. It is a class file included in the lang package. It should be noted that the embedded class file 600 is typically stored in the storage device 2 by being initially set in the program execution device in advance or acquired from the outside.
【0101】次に、選択補佐情報記憶部16は、上記ス
テップS31で入力した組込みクラスファイル600を
解析することによって、メモリ割り当ての選択方法を記
述した選択補佐情報を作成し記憶する(ステップS3
2)。なお、選択補佐情報記憶部16は、上記解析によ
って得られた選択補佐情報をテーブル情報にして記憶す
る。図10(a)は選択補佐情報記憶部16が上記選択
補佐情報として記憶するメソッド呼出し置換テーブル6
01であり、図10(b)は選択補佐情報記憶部16が
上記選択補佐情報として記憶するメモリ割り当て連動テ
ーブル602であり、図10(c)は選択補佐情報記憶
部16が上記選択補佐情報として記憶するクラス別メモ
リ割り当てテーブル603の一例を示している。Next, the selection assistant information storage unit 16 analyzes the built-in class file 600 input in step S31 to create and store the selection assistant information which describes the memory allocation selection method (step S3).
2). The selection assistant information storage unit 16 stores the selection assistant information obtained by the above analysis as table information. FIG. 10A shows a method call replacement table 6 stored in the selection assistant information storage unit 16 as the selection assistant information.
10B is a memory allocation interlocking table 602 that the selection assistant information storage unit 16 stores as the selection assistant information. FIG. 10C shows the selection assistant information storage unit 16 as the selection assistant information. An example of a class-based memory allocation table 603 to be stored is shown.
【0102】図10(a)において、メソッド呼出し置
換テーブル601は、ユーザクラスファイル500から
組込みクラスファイル600内部のメソッドを呼出した
場合、ユーザクラスファイル500によって生成された
データの生存消滅に与える影響を記述したものである。
具体的には、ユーザクラスファイル500(または組込
みクラスファイル600)のメソッドxから組込みクラ
スファイル600のメソッドyが呼出された場合、メソ
ッドxのオペランドスタックO、ローカル変数L、その
他の記憶領域に対して行われる可能性のある代入操作
を、レジスタ型の代入式の表記で表している。すなわ
ち、メソッドyを特定する識別子(クラス名、引数情報
を含むメソッド名の組等)およびメソッドyを呼出す際
に渡される引数の実行時の型(動的束縛)に対して、行
われる可能性のある代入操作を列挙したものである。In FIG. 10A, the method call replacement table 601 shows the influence of the method inside the built-in class file 600 from the user class file 500 on the survival and disappearance of the data generated by the user class file 500. It is a description.
Specifically, when the method y of the embedded class file 600 is called from the method x of the user class file 500 (or the embedded class file 600), the operand stack O of the method x, the local variable L, and other storage areas are The assignment operation that may be performed is expressed by the notation of a register-type assignment expression. That is, it may be performed for an identifier (class name, a set of method names including argument information, etc.) that identifies method y, and the runtime type (dynamic binding) of the arguments passed when method y is called. Is a list of assignment operations with.
【0103】このメソッド呼出し置換テーブル601の
作成のための解析基準を説明する。例えば、上記組込み
クラスファイル600を解析すれば、「java.la
ng.StringBuffer」クラスの「toSt
ring()」メソッドの典型的な実装においては、上
記メソッド呼出し時に渡される当該インスタンス(th
isインスタンス)への参照はどこにもコピーされず、
新たに生成された「java.lang.Strin
g」インスタンスが返り値として返されることがわか
る。すなわち、上記thisインスタンスへの参照の値
がオペランドスタックから降ろされ、代わりに新たに生
成された「StringBuffer」インスタンスが
オペランドスタックに積まれることになる。したがっ
て、このメソッド呼出しは、新たに生成された「jav
a.lang.String」インスタンスをインスタ
ンスSとすると、代入式「new S;Ot=S(オペ
ランドスタックOtは、その時点tにおけるオペランド
スタックOのトップの位置を示す)」と等価であること
が保証されるため、メソッド呼出し置換テーブル601
に置換後の代入式として記述される。Analysis criteria for creating the method call replacement table 601 will be described. For example, if the built-in class file 600 is analyzed, “java.la.
ng. "ToSt" of the "StringBuffer" class
In a typical implementation of the "ring ()" method, the instance (th
reference to is instance) is not copied anywhere,
The newly generated "java.lang.Strin"
It can be seen that the "g" instance is returned as the return value. That is, the value of the reference to the this instance is unloaded from the operand stack, and the newly created "StringBuffer" instance is stacked on the operand stack instead. Therefore, this method invocation will result in a newly created "java
a. Lang. Since the “String” instance is an instance S, it is guaranteed to be equivalent to the assignment expression “new S; Ot = S (the operand stack Ot indicates the position of the top of the operand stack O at that time t)”. Method call replacement table 601
Is described as the substitution expression after replacement.
【0104】また、上記組込みクラスファイル600を
解析すれば、「java.lang.String」ク
ラスの「valueOf(java.lang.Obj
ect)」メソッドの典型的な実装例において、引数と
して渡される参照の先が「java.lang.Str
ing」インスタンスであった場合、「java.la
ng.String」クラスの「toStrin
g()」メソッドが呼ばれることがわかる。しかし、こ
の「toString()」メソッドは、単純にthi
sインスタンスを返すだけであり、呼出し元メソッドの
オペランドスタックOやローカル変数L等の内容には一
切影響を与えないことが保証される。なぜなら、「to
String()」メソッドは、引数がオペランドスタ
ックOから一つ下ろされるが、同じ値を返り値としてオ
ペランドスタックOに積むからである(これらのメソッ
ドの典型的な実装が記述されたソースファイルの一例を
図11に示す)。したがって、メソッド呼出し置換テー
ブル601には、「java.lang.Strin
g」クラスの「valueOf(java.lang.
Object)」が、引数「java.lang.St
ring」で呼ばれた場合、空の代入式に置換してもよ
いことになり、メソッド呼出し置換テーブル601の置
換後の代入式に「なし」が記述される。If the built-in class file 600 is analyzed, "valueOf (java.lang.Obj) of the" java.lang.String "class is analyzed.
In a typical implementation example of the “ect) method, the destination of the reference passed as an argument is“ java.lang.Str ”.
ing "instance, if" java.la.
ng. "ToString" of the "String" class
It can be seen that the "g ()" method is called. However, this "toString ()" method is simply thi
Only the s instance is returned, and it is guaranteed that the contents of the operand stack O and the local variable L of the calling method are not affected at all. Because "to
This is because one argument is dropped from the operand stack O in the "String ()" method, and the same value is stacked as a return value in the operand stack O (an example of a source file in which typical implementations of these methods are described). Is shown in FIG. 11). Therefore, in the method call replacement table 601, “java.lang.Strin” is displayed.
g ”class of“ valueOf (java.lang.
Object) ”is an argument“ java.lang.St.
When called by "ring", it may be replaced with an empty assignment expression, and "none" is described in the replaced assignment expression of the method call replacement table 601.
【0105】図10(b)において、メモリ割り当て連
動テーブル602は、組込みクラスファイル600のイ
ンスタンスメソッドのバイトコードに含まれる各メモリ
割り当て操作命令に対して、当該メモリ割り当て操作に
よって確保すべきメモリ領域を、当該インスタンス(t
hisインスタンス)に割り当てられたメモリ領域と連
動させるか否かを記述したものである。具体的には、上
記thisインスタンスと連動したメモリ領域に割り当
てるべきメモリ割り当て操作命令の位置を特定する識別
子(クラス名、引数情報を含むメソッド名、およびアド
レスの組等)を列挙する。In FIG. 10B, the memory allocation interlocking table 602 shows the memory area to be secured by the memory allocation operation for each memory allocation operation instruction included in the bytecode of the instance method of the built-in class file 600. , The instance (t
It describes whether or not to interlock with the memory area allocated to the (his instance). Specifically, the identifiers (class name, method name including argument information, address set, etc.) for specifying the position of the memory allocation operation instruction to be allocated to the memory area linked with the above-mentioned instance are listed.
【0106】このメモリ割り当て連動テーブル602の
作成のための解析基準を説明する。例えば、典型的な
「java.lang.String」および「jav
a.lang.StringBuffer」の実装で
は、文字列の内容を格納するchar型配列への参照を
インスタンスフィールドに持つが、このchar型配列
は、必ず当該インスタンスが生成された直後にメモリ領
域が確保され、かつ当該インスタンスが消滅した後は必
ずどこからも参照されなくなる。したがって、当該イン
スタンスおよびchar型配列は、生成および消滅が同
時であると考えることができる。つまり、当該インスタ
ンスが寿命の短いデータのためのメモリ領域βに割り当
てられた場合、char型配列の寿命も短いので、メモ
リ領域βに割り当てるのが効率的である。一方、当該イ
ンスタンスが一般的な寿命を持つメモリ領域αに割り当
てられた場合、char型配列の寿命も長いので、ch
ar型配列もメモリ領域αに割り当てるのが好ましい。
そこで、このようなchar型配列のメモリ割り当て操
作命令については、当該インスタンスと連動したメモリ
領域に割り当てるために、メモリ割り当て連動テーブル
602に記述するものとする。The analysis criteria for creating the memory allocation interlocking table 602 will be described. For example, the typical "java.lang.String" and "java."
a. Lang. In the implementation of "StringBuffer", the instance field has a reference to the char type array that stores the contents of the character string. However, this char type array is always allocated a memory area immediately after the instance is created, and the instance After disappears, it will no longer be referenced from anywhere. Therefore, the instance and the char type array can be considered to be simultaneously created and deleted. That is, when the instance is allocated to the memory area β for the data having a short life, the life of the char-type array is also short, so it is efficient to allocate it to the memory area β. On the other hand, when the instance is allocated to the memory area α having a general life, the life of the char type array is long, so ch
The ar type array is also preferably assigned to the memory area α.
Therefore, such a char-type array memory allocation operation instruction is described in the memory allocation interlocking table 602 in order to be allocated to the memory area associated with the instance.
【0107】例えば、図12に示したソースコードをコ
ンパイルして得られる組込みクラスファイル600に記
述された「java.lang.StringBuff
er」クラスの実装例を解析した場合、文字列を内容を
格納するchar型配列valueに対するメモリ割り
当て操作は、図12においてコンストラクタで行われる
操作X1およびX2、バッファ拡張時に行われる操作X
3の3箇所である。したがって、図12のソースコード
をコンパイルして得られる「java.lang.St
ringBuffer」の組込みクラスファイル600
のバイトコードBCにおいて、上記の3箇所に対応する
「newarray」命令の位置(アドレス)を、メモ
リ割り当て連動テーブル602に記述しておけば、「S
tringBuffer」インスタンスに割り当てられ
たメモリ領域と同じメモリ領域にchar型配列val
ueの領域が割り当てることを表すことができる。For example, "java.lang.StringBuff" described in the embedded class file 600 obtained by compiling the source code shown in FIG.
When the implementation example of the "er" class is analyzed, the memory allocation operation for the char-type array value that stores the content of the character string is the operations X1 and X2 performed by the constructor in FIG. 12, and the operation X performed when the buffer is expanded.
There are 3 locations. Therefore, "java.lang.St" obtained by compiling the source code of FIG.
"RingBuffer" built-in class file 600
If the position (address) of the “newwarray” instruction corresponding to the above three positions is described in the memory allocation interlocking table 602 in the byte code BC of
char type array val in the same memory area as the memory area allocated to the "stringBuffer" instance
It can be represented that the area of ue allocates.
【0108】図10(c)において、クラス別メモリ割
り当てテーブル603は、組込みクラスファイル600
に含まれる組込みクラスのインスタンスを生成する際
に、割り当てるべきメモリ領域を記述したものである。
具体的には、クラス名および当該クラスのインスタンス
に割り当てるべきメモリ領域の組を記述するものであ
る。In FIG. 10C, the class-based memory allocation table 603 is a built-in class file 600.
It describes the memory area to be allocated when the instance of the built-in class included in is created.
Specifically, it describes a set of a class name and a memory area to be assigned to an instance of the class.
【0109】このクラス別メモリ割り当てテーブル60
3の作成のための解析基準を、「java.lang.
Exception」クラスおよびその派生クラスを例
として説明する。Java(R)の標準仕様における
「java.lang.Exception」クラス
は、例外インスタンスが詳細メッセージ文字列を持つこ
とができる。しかし、例えば家電機器のようにメモリな
どの資源が限られた環境においては、上記詳細メッセー
ジ文字列のような余分なメモリを要する機能は用いられ
ないことが多い。このような場合、組込みクラスにおけ
る「java.lang.Exception」クラス
として、詳細メッセージ文字列を持たない実装を採用す
ることができる。例えば、図13に示すようなソースコ
ードをコンパイルして得られる組込みクラスファイル6
00を解析した場合、詳細メッセージ文字列を持たない
「java.lang.Exception」クラスお
よびその派生クラスの典型的な実装に対して、空実装と
することができる。すなわち、これらのクラスのインス
タンスを複数生成しても、インスタンスの中身による区
別は存在しないため、「java.lang.Exce
ption」クラスのインスタンスを特定のメモリ領域
(ここでは、メモリ領域γとする)に一つだけ生成して
おけば、その後「java.lang.Excepti
on」クラスのインスタンスを生成する必要がある時
に、新たなメモリ領域を確保することなく、メモリ領域
γに生成された上記インスタンスへの参照を返すだけで
処理が可能となる。This class-based memory allocation table 60
The analysis criteria for the production of 3 is “java.lang.
The "Exception" class and its derived classes will be described as an example. In the "java.lang.Exception" class in the Java (R) standard specification, an exception instance can have a detailed message character string. However, in an environment where resources such as a memory are limited, such as a home electric appliance, a function requiring extra memory such as the detailed message character string is often not used. In such a case, an implementation that does not have a detailed message character string can be adopted as the "java.lang.Exception" class in the built-in class. For example, the embedded class file 6 obtained by compiling the source code as shown in FIG.
If 00 is parsed, it can be an empty implementation for a typical implementation of the “java.lang.Exception” class that does not have a detailed message string and its derived classes. That is, even if multiple instances of these classes are generated, there is no distinction based on the contents of the instances, so "java.lang.Exce.
If only one instance of the “ption” class is generated in a specific memory area (here, the memory area γ), then “java.lang.Excepti” is generated.
When it is necessary to generate an instance of the "on" class, processing can be performed by simply returning a reference to the above-described instance generated in the memory area γ without securing a new memory area.
【0110】このように、インスタンスの共用による再
利用が可能なクラスを、共用可能なインスタンス専用の
メモリ領域γに割り当てるようにクラス別メモリ割り当
てテーブル603を記述すれば、例外処理に伴って生成
される例外インスタンスの生成消滅によってメモリ領域
が乱されてガーベジコレクションの実行に負荷がかかる
ことを防止し、プログラムの実行効率を向上させること
が可能となる。なお、メモリ領域γをガーベジコレクシ
ョンの対象外として解放処理を行わなければ、一度生成
されたインスタンスは、いつまでも再利用することがで
きる。As described above, if the class-specific memory allocation table 603 is described such that the reusable class by sharing the instance is allocated to the sharable instance-specific memory area γ, it is generated in accordance with the exception processing. It is possible to prevent the memory area from being disturbed by the generation and extinction of the exception instance that occurs, and to prevent the load of the garbage collection from being executed, thereby improving the execution efficiency of the program. If the memory area γ is not subject to garbage collection and the releasing process is not performed, the instance once generated can be reused forever.
【0111】このようにして、選択補佐情報記憶部16
は、上述した選択補佐情報を作成および格納し、当該フ
ローによる処理を終了する。なお、選択補佐情報記憶部
16で処理される組込みクラスファイル600を解析し
選択補佐情報を作成する処理は、組込みクラスファイル
600の作成者が、直接各々のテーブル601〜603
を記述する、あるいは上記解析の助けとなるような情報
を別途選択補佐情報記憶部16に与えるようにしてもか
まわない。In this way, the selection assistant information storage unit 16
Creates and stores the above-mentioned selection assistant information, and ends the process according to the flow. In addition, the process of analyzing the built-in class file 600 processed by the selection assistant information storage unit 16 and creating the selection assistant information is performed by the creator of the built-in class file 600 directly in each of the tables 601 to 603.
May be described, or information that assists the above analysis may be separately provided to the selection assistant information storage unit 16.
【0112】上記組込みクラスファイル600の解析処
理後、組込みクラスファイル600ではないクラスファ
イル(以下、組込みクラスファイル600と区別するた
めに、ユーザクラスファイル500とする)がプログラ
ム実行部10に入力する。ユーザクラスファイル500
は、上記第1の実施形態で説明したクラスファイルと同
様であり、ユーザがJava(R)言語にて記述したプ
ログラムを、所定のJava(R)コンパイラによりコ
ンパイルすることによって得られたJava(R)クラ
スファイルである。このユーザクラスファイル500に
記述されたバイトコードが組込みクラスファイル600
内部のメソッドを呼出す場合、そのメソッドにデータの
生存消滅に関する情報を上記選択補佐情報として記述す
ることによって、ユーザクラスファイル500における
メモリ割り当て領域の選択について、選択補佐情報記憶
部16に記憶されている上記選択補佐情報が利用され
る。After the analysis processing of the built-in class file 600, a class file other than the built-in class file 600 (hereinafter referred to as a user class file 500 to distinguish from the built-in class file 600) is input to the program execution unit 10. User class file 500
Is the same as the class file described in the first embodiment, and is obtained by compiling a program written by the user in the Java (R) language with a predetermined Java (R) compiler. ) It is a class file. The bytecode described in this user class file 500 is the embedded class file 600.
When an internal method is called, the information regarding the survival / disappearance of data is described in the method as the selection assistant information, so that the selection assistant information storage unit 16 stores the selection of the memory allocation area in the user class file 500. The above selection assistant information is used.
【0113】上述したコンパイルの一例として、図14
はJava(R)言語にて記述したプログラムを示し、
図15は図14で示したプログラムをコンパイルして得
られたユーザクラスファイル500の中から、バイトコ
ードBC部分を抜粋して示したものである。なお、図1
4は、Java(R)のソースコードbar.java
で示されるプログラムであり、プログラム実行部10に
は、該ソースコードをコンパイルして得られたユーザク
ラスファイル500が入力される。As an example of the above-mentioned compilation, FIG.
Indicates a program written in Java (R) language,
FIG. 15 shows the bytecode BC portion extracted from the user class file 500 obtained by compiling the program shown in FIG. Note that FIG.
4 is Java (R) source code bar. Java
The user class file 500 obtained by compiling the source code is input to the program execution unit 10.
【0114】次に、当該プログラム実行装置がユーザク
ラスファイル500および組込みクラスファイル600
を処理し、メモリ割り当て選択する動作について説明す
る。図16および図17は、当該プログラム実行装置が
ユーザクラスファイル500および組込みクラスファイ
ル600を処理しメモリ割り当て選択する動作手順を示
すフローチャートである。Next, the program execution device is operated by the user class file 500 and the embedded class file 600.
Will be described and the operation of selecting memory allocation will be described. 16 and 17 are flowcharts showing an operation procedure in which the program execution device processes the user class file 500 and the embedded class file 600 and selects memory allocation.
【0115】図16において、プログラム実行装置はユ
ーザクラスファイル500および組込みクラスファイル
600を受け取り、プログラム実行部10に入力する
(ステップS41)。このユーザクラスファイル500
は、送受信装置5を介したデータ通信によって受信して
もいいし、システムバス6を介して他の外部装置から受
信してもかまわない。また、ユーザクラスファイル50
0は、予め記憶装置2に格納されていてもかまわない。
なお、ここでは、一例として上述したように、図14に
示したJava(R)のソースコードbar.java
をコンパイルして得られたユーザクラスファイル500
が、プログラム実行部10に入力されるものとする。ま
た、図15は上記コンパイルして得られたユーザクラス
ファイル500の中から、バイトコードBC部分を抜粋
したものである。In FIG. 16, the program execution device receives the user class file 500 and the embedded class file 600 and inputs them to the program execution unit 10 (step S41). This user class file 500
May be received by data communication via the transmission / reception device 5, or may be received from another external device via the system bus 6. Also, the user class file 50
0 may be stored in the storage device 2 in advance.
Here, as described above as an example, the Java (R) source code bar. Java
User class file 500 obtained by compiling
Are input to the program execution unit 10. Further, FIG. 15 is an excerpt of the bytecode BC portion from the user class file 500 obtained by the above compilation.
【0116】次に、メモリ割り当て操作検出部11は、
ユーザクラスファイル500および組込みクラスファイ
ル600のバイトコードBC列の中から、動的なメモリ
割り当て操作を行う命令を検出し(ステップS42)、
メモリ割り当て選択部12は、ユーザクラスファイル5
00のバイトコードBC列をレジスタ型の代入式の表記
に変換する(ステップS43)。これらのステップS4
2およびS43は、上述した第1の実施形態で説明した
図5におけるステップS12およびS13と同様である
ので、ここでは詳細な説明を省略する。Next, the memory allocation operation detecting section 11
An instruction to perform a dynamic memory allocation operation is detected from the bytecode BC strings of the user class file 500 and the embedded class file 600 (step S42),
The memory allocation selecting unit 12 uses the user class file 5
The bytecode BC string of 00 is converted into the notation of a register-type substitution expression (step S43). These steps S4
Steps 2 and S43 are the same as steps S12 and S13 in FIG. 5 described in the above-described first embodiment, so detailed description will be omitted here.
【0117】図18(a)はメモリ割り当て選択部12
が、図15で示したユーザクラスファイル500のバイ
トコードBC列を、レジスタ型の代入式504の表記お
よび後述する型解析の結果505に変換した一例であ
り、図18(b)は、後述する置換後の代入式506お
よび参照可能性のリスト507に変換した一例であり、
図18(c)はDU連鎖情報508に変換した一例であ
る。FIG. 18A shows the memory allocation selecting unit 12
Is an example in which the bytecode BC sequence of the user class file 500 shown in FIG. 15 is converted into a notation of a register type substitution expression 504 and a result of type analysis 505 described later, and FIG. 18B is described later. It is an example converted into a substitution expression 506 and a reference possibility list 507 after replacement,
FIG. 18C is an example in which the DU chain information 508 is converted.
【0118】図18(a)において、メモリ割り当て選
択部12は、上記ステップS43でユーザクラスファイ
ル500のバイトコードBC列をレジスタ型の代入式5
04の表記に変換する。ここで、レジスタ型の代入式5
04に記載されたメモリ領域S1〜S3は、「jav
a.lang.String」インスタンスに割り当て
られるメモリ領域とし、メモリ領域B1は、「jav
a.lang.StringBuffer」インスタン
スに割り当てられるメモリ領域を示している。なお、メ
モリ割り当て選択部12は、他のメソッドを呼出す「i
nvoke」系のバイトコード命令(すなわちバイトコ
ードBCのアドレス8、11、16、および19に記載
された命令)について、上記ステップS43では変換を
行わない。In FIG. 18 (a), the memory allocation selecting unit 12 sets the byte code BC string of the user class file 500 to the register type substitution expression 5 in step S43.
Convert to 04 notation. Here, register-type assignment expression 5
The memory areas S1 to S3 described in 04 are “java
a. Lang. The memory area is allocated to the "String" instance, and the memory area B1 is "java".
a. Lang. It shows the memory area allocated to the "StringBuffer" instance. The memory allocation selecting unit 12 calls "i" with another method.
In the step S43, the conversion is not performed for the "nvoke" type bytecode instructions (that is, the instructions described in the addresses 8, 11, 16, and 19 of the bytecode BC).
【0119】図16に戻り、メモリ割り当て選択部12
は、当該メソッドにおいて使用される参照型の値に対す
る型解析を行う(ステップS44)。この型解析の方法
は、既に公知のデータフロー・アナライザが行う型チェ
ックの結果が用いられる。上記データフロー・アナライ
ザとは、クラスファイルのロード時にバイトコードの健
全性を検証するために実行されるバイトコード・ベリフ
ァイアに含まれるモジュールである。上記データフロー
・アナライザの動作の詳細説明は、上記従来技術文献1
(第97頁〜第99頁「4.9.2 バイトコード・ベ
リファイア」)に詳述されている。Returning to FIG. 16, the memory allocation selecting unit 12
Performs type analysis on the reference type value used in the method (step S44). As the method of this type analysis, the result of the type check performed by the already known data flow analyzer is used. The data flow analyzer is a module included in a bytecode verifier that is executed to verify the integrity of bytecode when loading a class file. For a detailed description of the operation of the data flow analyzer, refer to the above-mentioned prior art document 1.
(Pages 97-99 "4.9.2 Bytecode Verifier").
【0120】図18(a)において、メモリ割り当て選
択部12は、上記ステップS44の型解析によって、型
解析の結果505を取得する。例えば、型解析の結果5
05のアドレス8の時点で、オペランドスタックO1お
よびO2に「java.lang.StringBuf
fer」型の参照値が、オペランドスタックO3および
ローカル変数L0に「java.lang.Strin
g」型の参照値が格納されているという情報が、上記ス
テップS44の型解析によって取得される。In FIG. 18A, the memory allocation selecting unit 12 obtains the result 505 of the type analysis by the type analysis in step S44. For example, the result of type analysis 5
At address 8 of 05, "java.lang.StringBuf" is added to the operand stacks O1 and O2.
The reference value of the “fer” type is stored in the operand stack O3 and the local variable L0 as “java.lang.Strin”.
The information that the “g” type reference value is stored is obtained by the type analysis in step S44.
【0121】図16に戻り、メモリ割り当て選択部12
は、上記ステップS43で変換されずに残った「inv
oke」系のバイトコード命令に対し、選択補佐情報記
憶部16に格納されているメソッド呼出し置換テーブル
601に基づいて、レジスタ型代入式表記に置換し、置
換後の代入式506を作成する(ステップS45)。Returning to FIG. 16, the memory allocation selecting unit 12
Is the "inv that remains without being converted in step S43.
“Byte” type bytecode instructions are replaced with the register type assignment expression notation based on the method call substitution table 601 stored in the selection assistant information storage unit 16 to create the substitution expression 506 after the substitution (step S45).
【0122】例えば、図18(a)および(b)におい
て、レジスタ型代入式504のアドレス19「invo
kevirtual #15<Method jav
a.lang.StringBuffer.toStr
ing()Ljava/lang/String;>
」に対しては、図10(a)におけるメソッド呼出し
置換テーブル601の「java.lang.Stri
ngBuffer」クラスの「toString()」
メソッドが相当するため、置換後の代入式506で「n
ew S3;O1=S」に置換される。For example, in FIGS. 18A and 18B, the address 19 "invoo" of the register type assignment expression 504 is used.
kevirual # 15 <Method jav
a. Lang. StringBuffer. toStr
ing () Ljava / lang / String;>
10 "in the method invocation replacement table 601 in FIG. 10A," java.lang.Str. "
"ngString" class "toString ()"
Since the method is equivalent, in the substitution expression 506 after replacement, “n
ew S3; O1 = S ”.
【0123】このように、上述したメソッド呼出し置換
テーブル601には、当該メソッドの呼出し時に渡され
る引数に参照型が含まれている場合、その参照型の値が
指すインスタンスの実行時の型を記述することができ
る。すなわち、メモリ割り当て選択部12は、「inv
oke」系のバイトコード命令に対し、上記メソッド呼
出し置換テーブル601にメソッドが記述されていて、
かつ参照型引数として渡される参照先のインスタンスの
型もテーブルに記述されている型と一致した場合に限
り、レジスタ型の代入式表記に置換する。この構成によ
れば、引数として渡される参照先のインスタンスの実行
時の型(動的束縛)によって当該メソッドの動作が変化
するような状況においても、その実行時の型に基づい
て、それぞれ適切な選択補佐情報を記述することができ
る。As described above, in the method call substitution table 601 described above, when the argument passed when the method is called includes the reference type, the runtime type of the instance indicated by the value of the reference type is described. can do. That is, the memory allocation selecting unit 12 displays “inv
A method is described in the method call replacement table 601 for the "oke" type bytecode instruction,
And, if the type of the referenced instance passed as a reference type argument also matches the type described in the table, it is replaced with the register type assignment expression notation. With this configuration, even in a situation where the behavior of the method changes depending on the runtime type (dynamic binding) of the referenced instance that is passed as an argument, it is possible to use an appropriate type based on the runtime type. Can describe optional assistant information.
【0124】ここで、呼出されるメソッドがメソッド呼
出し置換テーブル601に記述されていない場合、メモ
リ割り当て選択部12は、置換を行わない。このように
メソッド呼出しのコードが未置換で残った場合、メモリ
割り当て選択部12は、後述するステップS54におい
て生存区間がメソッドの内で閉じているか否かを判定す
るときに、生存区間の途中で他メソッドの呼出しがある
と判断することになる。例えば、「java.lan
g.String」クラスの「valueOf(jav
a.lang.Object)」メソッドの引数の実行
時の型が「java.lang.String」でない
場合、メソッド呼出し置換テーブル601に記述がない
ため、メモリ割り当て選択部12は、置換を行わない。Here, if the method to be called is not described in the method call replacement table 601, the memory allocation selecting unit 12 does not perform replacement. In this way, when the code of the method call remains unreplaced, the memory allocation selecting unit 12 determines whether or not the live range is closed in the method in step S54, which will be described later, during the live range. It will be judged that another method is called. For example, "java.lan
g. "ValueOf (jav
a. Lang. If the execution type of the argument of the "Object)" method is not "java.lang.String", there is no description in the method call replacement table 601, and the memory allocation selecting unit 12 does not perform replacement.
【0125】図16に戻り、メモリ割り当て選択部12
は、上記ステップS45で得られた置換後のレジスタ型
の代入式506に対して、メソッド単位でエイリアス解
析を行い(ステップS46)、そのエイリアス解析で得
られた参照可能性のリストに基づいてDU連鎖情報を取
得し(ステップS47)、上記ステップS42で検出さ
れたメモリ割り当て操作命令を所定の順番で1つ取得す
る(ステップS48)。これらのステップS46〜S4
8の手順は、上述した第1の実施形態で説明した図5の
ステップS14〜16と同様であるので、ここでは詳細
な説明を省略する。ただし、上記ステップS47のDU
連鎖情報取得では、メソッド呼出し命令について引数と
して渡される参照(thisインスタンスを含む)は、
全て使用されるものとしてDU連鎖情報を取得する。な
お、図18(b)において、置換後の代入式506に対
して上記ステップS46のエイリアス解析することによ
って、参照可能性のリスト507が得られ、上記ステッ
プS47のDU連鎖情報取得によって、図18(c)の
DU連鎖情報508が得られる。Returning to FIG. 16, the memory allocation selecting unit 12
Performs alias analysis on a method-by-method basis with respect to the register-type substitution expression 506 after substitution obtained in step S45 (step S46), and based on the list of reference possibilities obtained by the alias analysis, DU The chain information is acquired (step S47), and one memory allocation operation command detected in step S42 is acquired in a predetermined order (step S48). These steps S46 to S4
The procedure of No. 8 is the same as the steps S14 to S16 of FIG. 5 described in the above-described first embodiment, and therefore detailed description thereof will be omitted here. However, the DU in step S47 above
In chain information acquisition, the reference (including this instance) passed as an argument for the method call instruction is
Obtain DU chain information as all used. In FIG. 18B, the reference possibility list 507 is obtained by performing the alias analysis in step S46 on the substitution expression 506 after the replacement, and the DU chain information acquisition in step S47 is performed to obtain the list in FIG. The DU chain information 508 of (c) is obtained.
【0126】図17において、メモリ割り当て選択部1
2は、選択補佐情報記憶部16に格納されているメモリ
割り当て連動テーブル602を検索し、上記ステップS
48で取得したメモリ割り当て操作命令が、上記メモリ
割り当て連動テーブル602に記述されているか否かを
判定する(ステップS49)。そして、メモリ割り当て
選択部12は、上記メモリ割り当て操作命令が、メモリ
割り当て連動テーブル602に記述されている場合、当
該メモリ割り当て操作命令にthisインスタンスと連
動したメモリ領域を割り当てるという決定を行い、メモ
リ割り当て情報記憶部13に記録し(ステップS5
0)、処理は上記ステップS48に戻る。一方、メモリ
割り当て選択部12は、上記メモリ割り当て操作命令
が、メモリ割り当て連動テーブル602に記述されてい
ない場合、処理を次のステップS51に進める。In FIG. 17, the memory allocation selecting unit 1
2 searches the memory allocation interlocking table 602 stored in the selection assistant information storage unit 16, and executes the above step S
It is determined whether or not the memory allocation operation instruction acquired in 48 is described in the memory allocation interlocking table 602 (step S49). Then, when the memory allocation operation command is described in the memory allocation interlocking table 602, the memory allocation selecting unit 12 determines to allocate a memory area associated with the this instance to the memory allocation operation command, and the memory allocation operation instruction is executed. It is recorded in the information storage unit 13 (step S5
0), the process returns to step S48. On the other hand, if the memory allocation operation instruction is not described in the memory allocation interlocking table 602, the memory allocation selecting unit 12 advances the process to the next step S51.
【0127】ここで、上記ステップS49でメモリ割り
当て連動テーブル602に記述されていると判断される
メモリ割り当て操作命令は、予め格納されている組込み
クラスファイル600に基づいて取得された命令となる
(典型的には、ユーザクラスファイル500に基づいた
メモリ割り当て操作命令は、メモリ割り当て連動テーブ
ル602に記述されていない)。つまり、同じ組込みク
ラスファイル600が当該プログラム実行装置に格納さ
れている限り、上記ステップS50でメモリ割り当て情
報記憶部13に記録されるメモリ割り当て情報は、不変
であると考えられる。したがって、上記ステップS49
およびS50によるメモリ割り当て情報は、最初の解析
結果をメモリ割り当て情報記憶部13に記憶しておき、
以降の解析手順では上記ステップS49およびS50を
削除してもかまわない。Here, the memory allocation operation command determined to be described in the memory allocation interlocking table 602 in the above step S49 is a command acquired based on the embedded class file 600 stored in advance (typically Specifically, the memory allocation operation instruction based on the user class file 500 is not described in the memory allocation interlocking table 602). That is, as long as the same embedded class file 600 is stored in the program execution device, the memory allocation information recorded in the memory allocation information storage unit 13 in step S50 is considered to be unchanged. Therefore, the above step S49
As for the memory allocation information in S50 and S50, the first analysis result is stored in the memory allocation information storage unit 13,
In the subsequent analysis procedure, steps S49 and S50 may be deleted.
【0128】次に、メモリ割り当て選択部12は、選択
補佐情報記憶部16に格納されているクラス別メモリ割
り当てテーブル603を検索し、上記ステップS48で
取得したメモリ割り当て操作命令が、上記クラス別メモ
リ割り当てテーブル603に記述されているか否かを判
定する(ステップS51)。そして、メモリ割り当て選
択部12は、上記メモリ割り当て操作命令が、クラス別
メモリ割り当てテーブル603に記述されている場合、
クラス別メモリ割り当てテーブル603に記述されてい
るメモリ領域γを当該メモリ割り当て操作によって割り
当てるという決定を行い、メモリ割り当て情報記憶部1
3に記録し(ステップS52)、処理は上記ステップS
48に戻る。一方、メモリ割り当て選択部12は、上記
メモリ割り当て操作命令が、クラス別メモリ割り当てテ
ーブル603に記述されていない場合、処理を次のステ
ップS53に進める。Next, the memory allocation selecting unit 12 searches the class-specific memory allocation table 603 stored in the selection assistance information storage unit 16, and the memory allocation operation instruction acquired in step S48 is the class-specific memory. It is determined whether or not it is described in the allocation table 603 (step S51). Then, when the memory allocation operation instruction is described in the class-specific memory allocation table 603, the memory allocation selecting unit 12
The memory allocation information storage unit 1 determines that the memory area γ described in the class-specific memory allocation table 603 is allocated by the memory allocation operation.
3 (step S52), and the process proceeds to step S
Return to 48. On the other hand, if the memory allocation operation instruction is not described in the class-based memory allocation table 603, the memory allocation selection unit 12 advances the process to step S53.
【0129】次に、メモリ割り当て選択部12は、上記
ステップS48で所得したメモリ割り当て操作命令に対
して、当該メモリ割り当て操作によって割り当てられる
メモリ領域に格納されるデータの生存区間の解析を行い
(ステップS53)、その生存区間が、当該メモリ割り
当て操作が実行されるメソッドの内部で閉じているか否
かを判定する(ステップS54)。これらのステップS
53およびS54の手順は、上述した第1の実施形態で
説明した図5のステップS17およびS18と同様であ
るので、ここでは詳細な説明を省略する。ただし、上述
したように、上記メモリ割り当て操作命令に関連するメ
ソッド呼出しのコードが未置換で残っている場合、メモ
リ割り当て選択部12は、生存区間の途中で他メソッド
の呼出しがあると判断するため、上記ステップS54で
は上記生存区間がメソッド内部で閉じていないと判断す
る。Next, the memory allocation selecting unit 12 analyzes the live range of the data stored in the memory area allocated by the memory allocation operation with respect to the memory allocation operation command obtained in step S48 (step S48). S53), it is determined whether the live range is closed inside the method in which the memory allocation operation is executed (step S54). These steps S
The procedures of 53 and S54 are the same as steps S17 and S18 of FIG. 5 described in the above-described first embodiment, and thus detailed description thereof will be omitted here. However, as described above, when the method call code related to the memory allocation operation instruction remains unreplaced, the memory allocation selection unit 12 determines that another method is called during the life cycle. In step S54, it is determined that the live range is not closed inside the method.
【0130】そして、メモリ割り当て選択部12は、生
存区間がメソッド内部で閉じている場合、当該メモリ割
り当て操作命令を、非常に短期間しか生存しない局所的
(一時的)なデータ(すなわち、ガーベジコレクション
の対象とならないデータ)を保存するためメモリ領域β
に割り当てるという決定を行い、メモリ割り当て情報記
憶部13に上記メモリ割り当て情報として記録し(ステ
ップS55)、次のステップS57に処理を進める。一
方、メモリ割り当て選択部12は、生存区間がメソッド
内部で閉じていない場合、当該メモリ割り当て操作命令
を、比較的長期間生存する通常のデータ(すなわち、ガ
ーベジコレクションの対象となるデータ)を保存するた
めメモリ領域αを割り当てるという決定を行い、メモリ
割り当て情報記憶部13に上記メモリ割り当て情報とし
て記録し(ステップS56)、次のステップS57に処
理を進める。これらのステップS55およびS56の手
順も、上述した第1の実施形態で説明した図5のステッ
プS19およびS20と同様であるので、ここでは詳細
な説明を省略する。Then, when the live range is closed inside the method, the memory allocation selecting unit 12 executes the memory allocation operation instruction with local (temporary) data (that is, garbage collection) that survives for a very short period. Memory area β to store data that is not subject to
Memory allocation information is stored in the memory allocation information storage unit 13 as the memory allocation information (step S55), and the process proceeds to the next step S57. On the other hand, when the live range is not closed inside the method, the memory allocation selecting unit 12 stores the memory allocation operation instruction as normal data that survives for a relatively long period of time (that is, data that is the target of garbage collection). Therefore, it is determined that the memory area α is to be allocated, recorded in the memory allocation information storage unit 13 as the memory allocation information (step S56), and the process proceeds to the next step S57. The procedure of these steps S55 and S56 is also the same as the steps S19 and S20 of FIG. 5 described in the above-described first embodiment, and therefore detailed description thereof is omitted here.
【0131】次に、メモリ割り当て選択部12は、上記
ステップS42で検出した全てのメモリ割り当て操作命
令に対して、未処理のメモリ割り当て操作命令が残って
いるか否か判断する(ステップS57)。そして、メモ
リ割り当て選択部12は、上記ステップS57で未処理
のメモリ割り当て操作命令が残っている場合、上記ステ
ップS48に戻って処理を継続し、未処理のメモリ割り
当て操作命令が残っていない場合、当該フローを終了す
る。なお、図19は、当該フローに基づいて図15で示
したユーザクラスファイル500のバイトコードBCを
処理することによって、メモリ割り当て情報記憶部13
に格納されるメモリ割り当て情報を示している。Next, the memory allocation selecting section 12 judges whether or not there is an unprocessed memory allocation operating instruction with respect to all the memory allocation operating instructions detected in the above step S42 (step S57). Then, if there is an unprocessed memory allocation operation instruction remaining in step S57, the memory allocation selection unit 12 returns to step S48 to continue the processing, and if there is no unprocessed memory allocation operation instruction remaining, The flow ends. Note that, in FIG. 19, the memory allocation information storage unit 13 is processed by processing the bytecode BC of the user class file 500 shown in FIG. 15 based on the flow.
Shows memory allocation information stored in.
【0132】次に、命令実行部14およびメモリ割り当
て実行部15の動作についての説明する。命令実行部1
4は、上述したように入力したクラスファイル500に
記述されたバイトコード列を実行する。そのとき、命令
実行部14は、実行すべきバイトコードが上述したメモ
リ割り当て操作命令の場合、メモリ割り当て実行部15
を呼び出す。また、命令実行部14は、実行すべきバイ
トコードがメソッドの終了、すなわち「return」
命令等であった場合、メソッドの終了処理とともに、上
述の通り記憶部20のメモリ領域βに対して解放処理を
行う。Next, the operations of the instruction executing section 14 and the memory allocation executing section 15 will be described. Instruction execution unit 1
4 executes the bytecode sequence described in the class file 500 input as described above. At that time, when the bytecode to be executed is the memory allocation operation instruction described above, the instruction execution unit 14 executes the memory allocation execution unit 15
Call. Further, the instruction execution unit 14 determines that the bytecode to be executed is the end of the method, that is, “return”.
When it is an instruction or the like, the release processing is performed on the memory area β of the storage unit 20 as described above, together with the method termination processing.
【0133】メモリ割り当て実行部15は、命令実行部
14によって上述したメモリ割り当て操作命令に基づい
て呼び出されると、当該メモリ割り当て命令の位置(ク
ラス名、引数情報を含むメソッド名、およびアドレスの
組等)をキーとしてメモリ割り当て情報記憶部13を検
索し、当該メモリ割り当て命令に対応した、割り当てる
べきメモリ領域のレコードを取得する。そして、メモリ
割り当て実行部15は、取得されたレコードの内容が
「メモリ領域α」であった場合、メモリ領域αの中から
必要なメモリ領域を確保し、当該バイトコード命令に基
づいたメモリ割り当て操作を行う。また、メモリ割り当
て実行部15は、取得されたレコードの内容が「メモリ
領域β」であった場合、メモリ領域βの中から必要なメ
モリ領域を確保し、当該バイトコード命令に基づいたメ
モリ割り当て操作を行う。また、メモリ割り当て実行部
15は、取得されたレコードの内容が「メモリ領域が
γ」であった場合、当該メモリ割り当て命令が生成しよ
うとしているのと同じクラスのインスタンスが、既にメ
モリ領域γに生成済であれば、上記インスタンスへの参
照を返し、未生成であればメモリ領域γの中から必要な
メモリ領域を確保し、当該バイトコード命令に基づいた
メモリ割り当て操作を行う。また、メモリ割り当て実行
部15は、取得されたレコードの内容が「thisイン
スタンスと連動」の場合、当該メモリ割り当て操作命令
を含むインスタンスメソッドにおけるthisインスタ
ンスが、どのメモリ領域α〜γに格納されているかを調
査し、その格納されているメモリ領域α〜γの中から必
要なメモリ領域を確保して、当該バイトコード命令に基
づいたメモリ割り当て操作を行う。When the memory allocation execution unit 15 is called by the instruction execution unit 14 based on the above-mentioned memory allocation operation instruction, the memory allocation instruction position (class name, method name including argument information, and set of addresses, etc.). ) As a key, the memory allocation information storage unit 13 is searched, and the record of the memory area to be allocated corresponding to the memory allocation instruction is acquired. Then, when the content of the acquired record is the “memory area α”, the memory allocation execution unit 15 secures a necessary memory area from the memory area α and performs the memory allocation operation based on the bytecode instruction. I do. In addition, when the content of the acquired record is the “memory area β”, the memory allocation execution unit 15 secures a necessary memory area from the memory area β, and performs the memory allocation operation based on the bytecode instruction. I do. Further, when the content of the acquired record is “memory area γ”, the memory allocation executing unit 15 already generates an instance of the same class that the memory allocation instruction is trying to generate in the memory area γ. If completed, a reference to the above instance is returned, and if not generated, a necessary memory area is secured from the memory area γ, and a memory allocation operation based on the bytecode instruction is performed. In addition, in the case where the content of the acquired record is “linked with this instance”, the memory allocation execution unit 15 determines in which memory area α to γ the this instance in the instance method including the memory allocation operation instruction is stored. , A necessary memory area is secured from the stored memory areas α to γ, and a memory allocation operation based on the bytecode instruction is performed.
【0134】このように、図19で示したメモリ割り当
て情報によれば、寿命が非常に短いStringインス
タンスおよびStringBufferインスタンスを
一時的なデータ専用のメモリ領域βに割り当てることが
できる。これにより、寿命の短いデータの頻繁な生成消
滅によってメモリ領域が乱されて、ガーベジコレクショ
ンの実行に負荷がかかることを防止できるため、プログ
ラムの実行効率を向上させることが可能となる。As described above, according to the memory allocation information shown in FIG. 19, the String instance and the StringBuffer instance having a very short life can be allocated to the temporary data dedicated memory area β. As a result, it is possible to prevent the memory area from being disturbed by the frequent generation and disappearance of short-lived data, and thus avoiding a load on the execution of garbage collection, so that it is possible to improve the execution efficiency of the program.
【0135】ここで、メソッド呼出し置換テーブル60
1によって置換されたレジスタ型の代入式に現れるメモ
リ割り当て操作命令(例えば、図18(b)の置換後の
代入式506におけるメモリ領域S3)について、生存
区間解析によってメモリ割り当て情報ではメモリ領域α
に割り当てることになるが、命令実行部14は、この命
令をメモリ割り当て命令と認識できない場合がある。上
述したように、上記メモリ領域S3は、図10(a)に
示したメソッド呼出し置換テーブル601によって、
「java.lang.StringBuffer」ク
ラスの「toString()」メソッドの呼出し命令
が、「new S;Ot=S」に置換されることによっ
て生成されている。つまり、「new S」の操作は、
実際には「java.lang.StringBuff
er」クラスの「toString()」メソッド内で
実行される。このような場合、命令実行部14がメモリ
割り当て情報記憶部13に対してメモリ割り当て情報を
書き込むことができる構成とし、「toStrin
g()」メソッド呼出し時にメモリ領域S3に割り当て
るべきメモリ領域の情報を、メモリ割り当て情報記憶部
13に記憶させることによって、「toStrin
g()」メソッド内でのメモリ割り当て操作実行時に上
記メモリ割り当て情報を参照してメモリ領域S3に割り
当てるべきメモリ領域を決定することで、メモリ割り当
てが可能である。さらに、このメモリ領域S3の生存区
間を解析し、生存区間がメソッド内で閉じていれば、メ
モリ領域S3に対してメモリ領域βを割り当てることに
よって、ガーベジコレクションの実行にかかる負荷をさ
らに低減できる。Here, the method call replacement table 60
With respect to the memory allocation operation instruction (for example, the memory area S3 in the substitution expression 506 after the replacement in FIG. 18B) that appears in the register-type substitution expression replaced by 1, the memory allocation information indicates the memory area α in the memory allocation information.
However, the instruction execution unit 14 may not recognize this instruction as a memory allocation instruction. As described above, the memory area S3 is defined by the method call replacement table 601 shown in FIG.
The invocation instruction of the “toString ()” method of the “java.lang.StringBuffer” class is generated by being replaced with “new S; Ot = S”. In other words, the operation of "new S" is
Actually, "java.lang.StringBuff
It is executed in the "toString ()" method of the "er" class. In such a case, the instruction execution unit 14 is configured to be able to write the memory allocation information to the memory allocation information storage unit 13, and “toStrin
By storing the information of the memory area to be allocated to the memory area S3 when the "g ()" method is called in the memory allocation information storage unit 13, "toStrin"
Memory allocation is possible by determining the memory area to be allocated to the memory area S3 by referring to the memory allocation information when executing the memory allocation operation in the "g ()" method. Furthermore, the live range of the memory area S3 is analyzed, and if the live area is closed in the method, the load on the execution of garbage collection can be further reduced by allocating the memory area β to the memory area S3.
【0136】なお、第2の実施形態では、メモリ割り当
て情報および選択補佐情報として具体的なテーブル構成
を例示したが、本発明の適用範囲はこれらの形式に限定
されるものではないことは言うまでもない。In the second embodiment, specific table configurations are illustrated as the memory allocation information and the selection assistance information, but it goes without saying that the scope of application of the present invention is not limited to these formats. .
【0137】また、当該実施形態では、組込みクラスの
クラス別メモリ割り当てテーブル603にインスタンス
の共用による再利用が可能なクラスを記述したが、この
ようなクラスでなくてもかまわない。例えば、クラス毎
の振舞いの特性に基づいたメモリ領域の割り当てにも適
用できる。これは、記憶部20が、データの生存期間に
長さに基づいて、ガーベジコレクションを行う頻度が低
い寿命の長いデータ用のメモリ領域αおよびガーベジコ
レクションを行う頻度が高い寿命の短いデータ用のメモ
リ領域βから構成される場合、寿命が短いという特性を
持つクラスをメモリ領域βに割り当てるように上記クラ
ス別メモリ割り当てテーブル603を記述すれば、プロ
グラムの実行時に効率的なメモリ割り当てを行うことが
可能となる。Further, in this embodiment, the class-specific memory allocation table 603 of the built-in class describes the reusable class by sharing the instance, but the class does not have to be such a class. For example, it can be applied to memory area allocation based on behavior characteristics of each class. This is because the storage unit 20 stores a memory area α for long-life data having a low frequency of performing garbage collection and a memory for short-life data having a high frequency of performing garbage collection based on the length of the data lifetime. In the case of being composed of the area β, if the class-specific memory allocation table 603 is described so that the class having the characteristic of having a short life is allocated to the memory area β, it is possible to perform efficient memory allocation when the program is executed. Becomes
【0138】あるいは、記憶部20が、高速アクセスが
可能な内部メモリモジュールおよびアクセス速度が遅い
外部メモリモジュールから構成されている場合、頻繁に
読み書きが行われるという特性を持つクラスを内部メモ
リモジュールに割り当てるようにクラス別メモリ割り当
てテーブル603を記述することもできる。Alternatively, when the storage unit 20 is composed of an internal memory module capable of high-speed access and an external memory module having a low access speed, a class having a characteristic of frequent reading and writing is assigned to the internal memory module. The class-based memory allocation table 603 can be described as follows.
【0139】このように、第2の実施形態に係るプログ
ラム実行装置によれば、いかなるプログラムを実行する
場合においても内容が変化しない組込みクラスファイル
に対し、メモリ割り当て選択部が必要とするクラスファ
イルの解析情報を予め選択補佐情報として与えることが
できる。したがって、メモリ割り当て選択部に係る処理
の負荷を低減することができる。さらに、メソッドを越
えてのデータの生存情報等、クラスファイルに記述され
ている情報だけでは解析が困難であるような高度な選択
補佐情報を記述することにより、プログラムの実行時に
より効率的で正確なメモリ割り当てを行うことが可能と
なる。As described above, according to the program execution device of the second embodiment, the class file required by the memory allocation selector is not changed from the built-in class file whose contents do not change even when any program is executed. Analysis information can be given in advance as selection assistant information. Therefore, it is possible to reduce the processing load on the memory allocation selecting unit. Furthermore, by describing advanced selection assistant information that is difficult to analyze only with the information described in the class file, such as survival information of data across methods, it is more efficient and accurate when the program is executed. Memory allocation can be performed.
【図1】本発明の第1の実施形態に係るプログラム実行
装置のハード構成を示すブロック図である。FIG. 1 is a block diagram showing a hardware configuration of a program execution device according to a first embodiment of the present invention.
【図2】本発明のプログラムを図1のプログラム実行装
置で実行することによって形成される機能構成の一例を
示す機能ブロック図である。FIG. 2 is a functional block diagram showing an example of a functional configuration formed by executing the program of the present invention by the program execution device of FIG.
【図3】Java(R)言語にて記述したプログラムの
一例を示す図である。FIG. 3 is a diagram showing an example of a program written in Java (R) language.
【図4】図3のプログラムをコンパイルして得られたク
ラスファイル500の中から、バイトコードBC部分を
抜粋して示した図である。FIG. 4 is a diagram showing a bytecode BC portion extracted from a class file 500 obtained by compiling the program of FIG.
【図5】図2のプログラム実行装置がクラスファイル5
00を処理しメモリ割り当て選択する動作手順を示すフ
ローチャートである。5 is a class file 5 of the program execution device of FIG.
10 is a flowchart showing an operation procedure of processing 00 to select memory allocation.
【図6】図2のメモリ割り当て選択部12が、バイトコ
ードBC列を、レジスタ型の代入式501の表記、参照
可能性のリスト502、およびDU連鎖情報503に変
換した一例を示す図である。FIG. 6 is a diagram showing an example in which the memory allocation selecting unit 12 in FIG. 2 converts a bytecode BC sequence into a notation of a register type assignment expression 501, a reference possibility list 502, and DU chain information 503. .
【図7】図2のメモリ割り当て情報記憶部13に記録さ
れるメモリ割り当て情報の一例を示す図である。7 is a diagram showing an example of memory allocation information recorded in a memory allocation information storage unit 13 of FIG.
【図8】本発明の第2の実施形態に係るプログラムを図
1のプログラム実行装置で実行することによって形成さ
れる機能構成の一例を示す機能ブロック図である。FIG. 8 is a functional block diagram showing an example of a functional configuration formed by executing the program according to the second embodiment of the present invention by the program execution device of FIG. 1.
【図9】図8の選択補佐情報記憶部16が組込みクラス
ファイル600を処理する動作を示すフローチャートで
ある。9 is a flowchart showing an operation in which the selection assistant information storage unit 16 of FIG. 8 processes an embedded class file 600. FIG.
【図10】図8の選択補佐情報記憶部16が選択補佐情
報として記憶するメソッド呼出し置換テーブル601、
メモリ割り当て連動テーブル602、およびクラス別メ
モリ割り当てテーブル603の一例を示す図である。10 is a method call replacement table 601 stored as selection assistant information in the selection assistant information storage unit 16 of FIG. 8;
It is a figure which shows an example of the memory allocation interlocking | linkage table 602 and the memory allocation table 603 classified by class.
【図11】図8の選択補佐情報記憶部16が図10のメ
ソッド呼出し置換テーブル601を作成するための、メ
ソッドの典型的な実装が記述されたソースファイルの一
例を示す図である。11 is a diagram showing an example of a source file in which a typical implementation of a method is described for the selection assistant information storage unit 16 of FIG. 8 to create the method call replacement table 601 of FIG.
【図12】図8の選択補佐情報記憶部16が図10のメ
モリ割り当て連動テーブル602を作成するためのソー
スファイルの一例を示す図である。12 is a diagram showing an example of a source file for the selection assistant information storage unit 16 of FIG. 8 to create the memory allocation interlocking table 602 of FIG.
【図13】図8の選択補佐情報記憶部16が図10のク
ラス別メモリ割り当てテーブル603を作成するための
ソースファイルの一例を示す図である。13 is a diagram showing an example of a source file for the selection assistant information storage unit 16 of FIG. 8 to create the class-based memory allocation table 603 of FIG. 10;
【図14】Java(R)言語にて記述したプログラム
の一例を示す図である。FIG. 14 is a diagram showing an example of a program written in Java (R) language.
【図15】図14で示したプログラムをコンパイルして
得られたユーザクラスファイル500の中から、バイト
コードBC部分を抜粋して示した図である。15 is a diagram showing a bytecode BC portion extracted from a user class file 500 obtained by compiling the program shown in FIG.
【図16】図8のプログラム実行装置がユーザクラスフ
ァイル500および組込みクラスファイル600を処理
しメモリ割り当て選択する動作手順を示すフローチャー
トである。16 is a flowchart showing an operation procedure in which the program execution device of FIG. 8 processes the user class file 500 and the embedded class file 600 and selects memory allocation.
【図17】図8のプログラム実行装置がユーザクラスフ
ァイル500および組込みクラスファイル600を処理
しメモリ割り当て選択する動作手順を示すフローチャー
トである。17 is a flowchart showing an operation procedure in which the program execution device of FIG. 8 processes the user class file 500 and the embedded class file 600 and selects memory allocation.
【図18】図8のメモリ割り当て選択部12が、バイト
コードBC列を、レジスタ型の代入式504の表記、型
解析の結果505、置換後の代入式506、参照可能性
のリスト507、およびDU連鎖情報508に変換した
一例を示す図ある。FIG. 18 is a diagram showing how the memory allocation selecting unit 12 of FIG. 8 writes the bytecode BC sequence into a register type assignment expression 504, a type analysis result 505, a substitution expression 506 after replacement, a reference possibility list 507, and It is a figure which shows an example converted into DU chain information 508.
【図19】図8のメモリ割り当て情報記憶部13に記録
されるメモリ割り当て情報の一例を示す図である。19 is a diagram showing an example of memory allocation information recorded in the memory allocation information storage unit 13 of FIG.
1…CPU 10…プログラム実行部 11…メモリ割り当て操作検出部 12…メモリ割り当て選択部 13…メモリ割り当て情報記憶部 14…命令実行部 15…メモリ割り当て実行部 16…選択補佐情報記憶部 2…記憶装置 20…記憶部 3…入力装置 4…出力装置 5…送受信装置 6…システムバス 500…クラスファイル 501、504…レジスタ型代入式 502、507…参照可能性のリスト 503、508…DU連鎖情報 505…型解析の結果 506…置換後の代入式 600…組込みクラスファイル 601…メソッド呼出し置換テーブル 602…メモリ割り当て連動テーブル 603…クラス別メモリ割り当てテーブル BC…バイトコード α、β、γ…メモリ領域 1 ... CPU 10 ... Program execution unit 11 ... Memory allocation operation detection unit 12 ... Memory allocation selecting section 13 ... Memory allocation information storage unit 14 ... Instruction execution unit 15 ... Memory allocation execution unit 16 ... Selection assistant information storage unit 2 ... Storage device 20 ... storage unit 3 ... Input device 4 ... Output device 5 ... Transceiver 6 ... System bus 500 ... Class file 501, 504 ... Register type assignment expression 502, 507 ... List of reference possibilities 503, 508 ... DU chain information 505 ... Result of type analysis 506 ... Substitution expression after replacement 600 ... Built-in class file 601 ... Method call replacement table 602 ... Memory allocation interlocking table 603 ... Memory allocation table by class BC ... byte code α, β, γ ... Memory area
───────────────────────────────────────────────────── フロントページの続き (72)発明者 金丸 智一 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 富永 宣輝 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 Fターム(参考) 5B060 AA06 ─────────────────────────────────────────────────── ─── Continued front page (72) Inventor Tomokazu Kanamaru 1006 Kadoma, Kadoma-shi, Osaka Matsushita Electric Sangyo Co., Ltd. (72) Inventor Nobuteru Tominaga 1006 Kadoma, Kadoma-shi, Osaka Matsushita Electric Sangyo Co., Ltd. F-term (reference) 5B060 AA06
Claims (28)
を所定のコンパイラによりコンパイルすることによって
得られたクラスファイルを実行するプログラム実行装置
であって、 複数の領域に分けられたメモリと、 前記クラスファイルに記述されたメモリ割り当て操作命
令を検出するメモリ割り当て操作検出部と、 前記メモリ割り当て操作検出部によって検出された前記
メモリ割り当て操作命令を解析し、該メモリ割り当て操
作命令によって前記クラスファイルの実行時に割り当て
るべき前記メモリ領域を選択するメモリ割り当て選択部
と、 前記メモリ割り当て選択部によって選択された前記メモ
リ領域と前記メモリ割り当て操作命令とを対応づけたメ
モリ割り当て情報を記憶するメモリ割り当て情報記憶部
と、 前記クラスファイルを実行する命令実行部と、 前記命令実行部における前記クラスファイル中の前記メ
モリ割り当て操作命令の実行時に、前記メモリ割り当て
情報に基づいて該メモリ割り当て操作命令に対応した前
記メモリ領域を前記命令実行部に対して指示するメモリ
割り当て実行部とを備える、プログラム実行装置。1. A program execution device for executing a class file obtained by compiling a program in an object-oriented language with a predetermined compiler, comprising: a memory divided into a plurality of areas; and a memory described in the class file. A memory allocation operation detection unit for detecting a memory allocation operation instruction, and the memory to be allocated at the time of execution of the class file by analyzing the memory allocation operation instruction detected by the memory allocation operation detection unit. A memory allocation selecting unit that selects an area; a memory allocation information storage unit that stores memory allocation information that associates the memory area selected by the memory allocation selecting unit with the memory allocation operation instruction; Execution And a memory area corresponding to the memory allocation operation instruction on the basis of the memory allocation information when executing the memory allocation operation instruction in the class file in the instruction execution section. And a memory allocation execution unit that gives instructions.
リ割り当て操作命令に関連する処理を、使用済みの前記
メモリ領域を自動的に検出して解放するガーベジコレク
ション処理の対象であることと該ガーベジコレクション
処理の対象でないこととを区別することによって前記ク
ラスファイルの実行時に割り当てるべき前記メモリ領域
を選択する、請求項1に記載のプログラム実行装置。2. The memory allocation selecting unit is a target of a garbage collection process for automatically detecting and releasing the used memory area, and the processing related to the memory allocation operation instruction, and the garbage collection. The program execution device according to claim 1, wherein the memory area to be allocated at the time of execution of the class file is selected by distinguishing it from being not a processing target.
リ割り当て操作命令に関連する処理が継続して実行され
る期間として生存区間を算出し、その生存区間に基づい
て前記クラスファイルの実行時に割り当てるべき前記メ
モリ領域を選択する、請求項1に記載のプログラム実行
装置。3. The memory allocation selecting unit should calculate a live range as a period in which a process related to the memory allocation operation instruction is continuously executed, and allocate the live range based on the live range when the class file is executed. The program execution device according to claim 1, wherein the memory area is selected.
よって構成され実行環境におけるクラスライブラリであ
る組込みクラスファイルを予め格納する組込みクラスフ
ァイル記憶部と、 予め前記組込みクラスファイルを解析することによっ
て、前記メモリ割り当て操作命令によって前記クラスフ
ァイルの実行時に割り当てるべき前記メモリ領域を選択
する基準を示す選択補佐情報を記憶する選択補佐情報記
憶部とをさらに備え、 前記メモリ割り当て選択部は、前記選択補佐情報記憶部
に記憶された前記選択補佐情報に基づいて、前記メモリ
割り当て操作検出部によって検出された前記メモリ割り
当て操作命令によって前記クラスファイルの実行時に割
り当てるべき前記メモリ領域を選択する、請求項1に記
載のプログラム実行装置。4. A built-in class file storage unit that stores in advance an embedded class file that is a class library in an execution environment and that is configured by at least one fixed class file; and the memory allocation operation by analyzing the embedded class file in advance. Further comprising a selection assistant information storage unit for storing selection assistant information indicating a criterion for selecting the memory area to be allocated at the time of executing the class file by an instruction, wherein the memory allocation selection unit is stored in the selection assistant information storage unit. 2. The program execution device according to claim 1, wherein the memory area to be allocated at the time of execution of the class file is selected by the memory allocation operation instruction detected by the memory allocation operation detection unit based on the selected assistant information. .
クラスに対して該組込みクラスのインスタンスを割り当
てるべき前記メモリ領域を選択する基準が記述されてい
ることを特徴とする、請求項4に記載のプログラム実行
装置。5. The selection assistant information according to claim 4, wherein a criterion for selecting the memory area to which an instance of the built-in class is to be assigned is described for each built-in class. Program execution unit.
ファイルによって実行される前記メモリ割り当て操作命
令に対して、該メモリ割り当て操作命令の実行時に割り
当てるべき前記メモリ領域を選択する基準が記述されて
いることを特徴とする、請求項4に記載のプログラム実
行装置。6. The selection assistant information describes, with respect to the memory allocation operation instruction executed by the embedded class file, a criterion for selecting the memory area to be allocated when the memory allocation operation instruction is executed. The program execution device according to claim 4, characterized in that
て操作命令を実行する組込みクラスのインスタンスに割
り当てられた前記メモリ領域の選択結果に連動して、該
メモリ割り当て操作命令によって割り当てるべき前記メ
モリ領域を選択する基準が記述されていることを特徴と
する、請求項6に記載のプログラム実行装置。7. The selection assistant information, in association with a selection result of the memory area allocated to an instance of an embedded class that executes the memory allocation operation instruction, selects the memory area to be allocated by the memory allocation operation instruction. 7. The program execution device according to claim 6, wherein criteria for selection are described.
よって構成され実行環境におけるクラスライブラリであ
る組込みクラスファイルを予め格納する組込みクラスフ
ァイル記憶部と、 予め前記組込みクラスファイルを解析することによっ
て、前記メモリ割り当て操作命令によって前記クラスフ
ァイルの実行時に割り当てるべき前記メモリ領域を選択
する基準を示す選択補佐情報を記憶する選択補佐情報記
憶部とをさらに備え、 前記選択補佐情報は、前記組込みクラスファイルのそれ
ぞれのメソッドに対して、該メソッドの実行によって生
成されるデータが継続して使用される生存区間に与える
影響が記述され、 前記メモリ割り当て選択部は、前記選択補佐情報記憶部
に記憶された前記選択補佐情報に基づいて、前記メモリ
割り当て操作検出部によって検出された前記メモリ割り
当て操作命令によって前記クラスファイルの実行時に割
り当てるべき前記メモリ領域を選択する、請求項3に記
載のプログラム実行装置。8. A built-in class file storage unit that stores in advance a built-in class file that is a class library in an execution environment and that is configured by at least one fixed class file, and the memory allocation operation by analyzing the built-in class file beforehand. Further comprising a selection assistant information storage unit that stores selection assistant information indicating a criterion for selecting the memory area to be allocated at the time of executing the class file by an instruction, and the selection assistant information is stored in each method of the embedded class file. On the other hand, the influence that the data generated by the execution of the method has on the live range that is continuously used is described, and the memory allocation selecting unit is configured to store the selection assistant information stored in the selection assistant information storage unit. Based on the memory allocation operation detection The program execution device according to claim 3, wherein the memory area to be allocated at the time of execution of the class file is selected by the memory allocation operation instruction detected by the unit.
行によって生成されるデータの前記生存区間に与える影
響が、前記組込みクラスファイルの前記メソッドに渡さ
れる引数の実行時の型に依存して記述され、 前記メモリ割り当て選択部は、組込みクラスのインスタ
ンスの型を解析し、前記インスタンスの実行時の型に基
づいて前記選択補佐情報を参照することによって、前記
メモリ割り当て操作検出部によって検出された前記メモ
リ割り当て操作命令によって前記クラスファイルの実行
時に割り当てるべき前記メモリ領域を選択することを特
徴とする、請求項8に記載のプログラム実行装置。9. The selection assistance information describes the influence of the data generated by the execution of the method on the live range, depending on the runtime type of the argument passed to the method of the embedded class file. The memory allocation selecting unit analyzes the type of an instance of a built-in class and refers to the selection assistant information based on the runtime type of the instance to detect the memory allocation operation detecting unit. 9. The program execution device according to claim 8, wherein the memory area to be allocated at the time of executing the class file is selected by a memory allocation operation instruction.
ng.Stringクラスに対して、前記メモリ割り当
て操作命令によって前記クラスファイルの実行時に割り
当てるべき前記メモリ領域を選択する基準が記述されて
いることを特徴とする、請求項4に記載のプログラム実
行装置。10. The selection assistant information is Java. la
ng. The program execution device according to claim 4, wherein a criterion for selecting the memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction is described for a String class.
ng.StringBufferクラスに対して、前記
メモリ割り当て操作命令によって前記クラスファイルの
実行時に割り当てるべき前記メモリ領域を選択する基準
が記述されていることを特徴とする、請求項4に記載の
プログラム実行装置。11. The selection assistant information is Java. la
ng. The program execution device according to claim 4, wherein a criterion for selecting the memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction is described for the StringBuffer class.
モリ割り当て操作検出部によって検出された前記メモリ
割り当て操作命令によって前記クラスファイルの実行時
に割り当てるべき前記メモリ領域を選択する処理を、前
記クラスファイルのロード時に行うことを特徴とする、
請求項1に記載のプログラム実行装置。12. The memory allocation selecting unit performs a process of selecting the memory area to be allocated at the time of execution of the class file according to the memory allocation operation instruction detected by the memory allocation operation detecting unit, loading the class file. Characterized by doing occasionally,
The program execution device according to claim 1.
モリ割り当て操作検出部によって検出された前記メモリ
割り当て操作命令によって前記クラスファイルの実行時
に割り当てるべき前記メモリ領域を選択する処理を、前
記メモリ割り当て操作命令を含むメソッドの初回あるい
は所定回毎に行うことを特徴とする、請求項1に記載の
プログラム実行装置。13. The memory allocation operation command, wherein the memory allocation selection unit performs a process of selecting the memory area to be allocated at the time of execution of the class file according to the memory allocation operation command detected by the memory allocation operation detection unit. The program execution device according to claim 1, wherein the method is performed for the first time or for every predetermined number of times.
ムを所定のコンパイラによりコンパイルすることによっ
て得られたクラスファイルを、複数の領域に分けられた
メモリを用いて実行するプログラム実行方法であって、 前記クラスファイルに記述されたメモリ割り当て操作命
令を検出するメモリ割り当て操作検出ステップと、 前記メモリ割り当て操作検出ステップによって検出され
た前記メモリ割り当て操作命令を解析し、該メモリ割り
当て操作命令によって前記クラスファイルの実行時に割
り当てるべき前記メモリ領域を選択するメモリ割り当て
選択ステップと、 前記メモリ割り当て選択ステップによって選択された前
記メモリ領域と前記メモリ割り当て操作命令とを対応づ
けたメモリ割り当て情報を記憶するメモリ割り当て情報
記憶ステップと、 前記クラスファイルを実行する命令実行ステップと、 前記命令実行ステップにおける前記クラスファイル中の
前記メモリ割り当て操作命令の実行時に、前記メモリ割
り当て情報に基づいて該メモリ割り当て操作命令に対応
した前記メモリ領域を前記命令実行ステップに対して指
示するメモリ割り当て実行ステップとを含む、プログラ
ム実行方法。14. A program execution method for executing a class file obtained by compiling a program in an object-oriented language by a predetermined compiler, using a memory divided into a plurality of areas, wherein A memory allocation operation detecting step of detecting a described memory allocation operation instruction, and the memory allocation operation instruction detected by the memory allocation operation detecting step should be analyzed and allocated by the memory allocation operation instruction when the class file is executed. A memory allocation selecting step for selecting the memory area, and a memory allocation information storage for storing memory allocation information in which the memory area selected by the memory allocation selecting step and the memory allocation operation instruction are associated with each other. A step of executing the class file, an instruction execution step of executing the class file, and a memory corresponding to the memory allocation operation instruction based on the memory allocation information when the memory allocation operation instruction in the class file is executed in the instruction execution step. And a memory allocation execution step of designating an area to the instruction execution step.
前記メモリ割り当て操作命令に関連する処理を、使用済
みの前記メモリ領域を自動的に検出して解放するガーベ
ジコレクション処理の対象であることと該ガーベジコレ
クション処理の対象でないこととを区別することによっ
て前記クラスファイルの実行時に割り当てるべき前記メ
モリ領域を選択する、請求項14に記載のプログラム実
行方法。15. The memory allocation selecting step comprises:
By distinguishing the process related to the memory allocation operation instruction from the target of the garbage collection process that automatically detects and releases the used memory area and the target of the garbage collection process, 15. The program execution method according to claim 14, wherein the memory area to be allocated is selected when the class file is executed.
前記メモリ割り当て操作命令に関連する処理が継続して
実行される期間として生存区間を算出し、その生存区間
に基づいて前記クラスファイルの実行時に割り当てるべ
き前記メモリ領域を選択する、請求項14に記載のプロ
グラム実行方法。16. The memory allocation selecting step comprises:
The live range is calculated as a period during which the process related to the memory allocation operation instruction is continuously executed, and the memory area to be allocated at the time of execution of the class file is selected based on the live range. Program execution method.
によって構成され実行環境におけるクラスライブラリで
ある組込みクラスファイルを予め格納する組込みクラス
ファイル記憶ステップと、 予め前記組込みクラスファイルを解析することによっ
て、前記メモリ割り当て操作命令によって前記クラスフ
ァイルの実行時に割り当てるべき前記メモリ領域を選択
する基準を示す選択補佐情報を記憶する選択補佐情報記
憶ステップとをさらに含み、 前記メモリ割り当て選択ステップは、前記選択補佐情報
記憶ステップに記憶された前記選択補佐情報に基づい
て、前記メモリ割り当て操作検出ステップによって検出
された前記メモリ割り当て操作命令によって前記クラス
ファイルの実行時に割り当てるべき前記メモリ領域を選
択する、請求項14に記載のプログラム実行方法。17. An embedded class file storing step of pre-storing an embedded class file which is a class library in an execution environment and is configured by at least one fixed class file, and the memory allocation operation by analyzing the embedded class file in advance. Further comprising a selection assistant information storage step of storing selection assistant information indicating a criterion for selecting the memory area to be allocated at the time of executing the class file by an instruction, the memory allocation selection step being stored in the selection assistant information storage step. 15. The memory area to be allocated at the time of execution of the class file is selected by the memory allocation operation instruction detected by the memory allocation operation detection step based on the selected selection assistance information. Program execution method of mounting.
みクラスに対して該組込みクラスのインスタンスを割り
当てるべき前記メモリ領域を選択する基準が記述されて
いることを特徴とする、請求項17に記載のプログラム
実行方法。18. The selection assistant information according to claim 17, wherein a criterion for selecting the memory area to which an instance of the built-in class is to be assigned is described for each built-in class. Program execution method.
スファイルによって実行される前記メモリ割り当て操作
命令に対して、該メモリ割り当て操作命令の実行時に割
り当てるべき前記メモリ領域を選択する基準が記述され
ていることを特徴とする、請求項17に記載のプログラ
ム実行方法。19. The selection assistant information describes, with respect to the memory allocation operation instruction executed by the embedded class file, a criterion for selecting the memory area to be allocated when the memory allocation operation instruction is executed. 18. The program execution method according to claim 17, wherein:
当て操作命令を実行する組込みクラスのインスタンスに
割り当てられた前記メモリ領域の選択結果に連動して、
該メモリ割り当て操作命令によって割り当てるべき前記
メモリ領域を選択する基準が記述されていることを特徴
とする、請求項19に記載のプログラム実行方法。20. The selection assistant information is interlocked with a selection result of the memory area allocated to an instance of an embedded class that executes the memory allocation operation instruction,
20. The program execution method according to claim 19, wherein criteria for selecting the memory area to be allocated by the memory allocation operation instruction are described.
によって構成され実行環境におけるクラスライブラリで
ある組込みクラスファイルを予め格納する組込みクラス
ファイル記憶ステップと、 予め前記組込みクラスファイルを解析することによっ
て、前記メモリ割り当て操作命令によって前記クラスフ
ァイルの実行時に割り当てるべき前記メモリ領域を選択
する基準を示す選択補佐情報を記憶する選択補佐情報記
憶ステップとをさらに含み、 前記選択補佐情報は、前記組込みクラスファイルのそれ
ぞれのメソッドに対して、該メソッドの実行によって生
成されるデータが継続して使用される生存区間に与える
影響が記述され、 前記メモリ割り当て選択ステップは、前記選択補佐情報
記憶ステップに記憶された前記選択補佐情報に基づい
て、前記メモリ割り当て操作検出ステップによって検出
された前記メモリ割り当て操作命令によって前記クラス
ファイルの実行時に割り当てるべき前記メモリ領域を選
択する、請求項16に記載のプログラム実行方法。21. An embedded class file storing step of pre-storing an embedded class file which is a class library in an execution environment and is configured by at least one fixed class file; and the memory allocation operation by analyzing the embedded class file in advance. Further comprising a selection assistant information storage step of storing selection assistant information indicating a criterion for selecting the memory area to be allocated at the time of execution of the class file by an instruction, the selection assistant information being stored in each method of the embedded class file. On the other hand, the effect that the data generated by the execution of the method has on the live range that is continuously used is described, and the memory allocation selecting step is performed on the selection assistant information stored in the selection assistant information storing step. On the basis of, 17. The program execution method according to claim 16, wherein the memory area to be allocated at the time of execution of the class file is selected by the memory allocation operation instruction detected by the memory allocation operation detection step.
実行によって生成されるデータの前記生存区間に与える
影響が、前記組込みクラスファイルの前記メソッドに渡
される引数の実行時の型に依存して記述され、 前記メモリ割り当て選択ステップは、組込みクラスのイ
ンスタンスの型を解析し、前記インスタンスの実行時の
型に基づいて前記選択補佐情報を参照することによっ
て、前記メモリ割り当て操作検出ステップによって検出
された前記メモリ割り当て操作命令によって前記クラス
ファイルの実行時に割り当てるべき前記メモリ領域を選
択することを特徴とする、請求項21に記載のプログラ
ム実行方法。22. The selection assistant information is described in such a manner that the influence of the data generated by the execution of the method on the live range depends on the runtime type of the argument passed to the method of the embedded class file. The memory allocation selecting step analyzes the type of an instance of a built-in class, and refers to the selection assistant information based on the runtime type of the instance to detect the memory allocation operation detecting step. 22. The program execution method according to claim 21, wherein the memory area to be allocated at the time of executing the class file is selected by a memory allocation operation instruction.
ng.Stringクラスに対して、前記メモリ割り当
て操作命令によって前記クラスファイルの実行時に割り
当てるべき前記メモリ領域を選択する基準が記述されて
いることを特徴とする、請求項17に記載のプログラム
実行方法。23. The selection assistant information is Java. la
ng. 18. The program execution method according to claim 17, wherein criteria for selecting the memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction are described for the String class.
ng.StringBufferクラスに対して、前記
メモリ割り当て操作命令によって前記クラスファイルの
実行時に割り当てるべき前記メモリ領域を選択する基準
が記述されていることを特徴とする、請求項17に記載
のプログラム実行方法。24. The selection assistant information is Java. la
ng. 18. The program executing method according to claim 17, wherein a criterion for selecting the memory area to be allocated at the time of executing the class file by the memory allocation operation instruction is described for the StringBuffer class.
前記メモリ割り当て操作検出ステップによって検出され
た前記メモリ割り当て操作命令によって前記クラスファ
イルの実行時に割り当てるべき前記メモリ領域を選択す
る処理を、前記クラスファイルのロード時に行うことを
特徴とする、請求項14に記載のプログラム実行方法。25. The memory allocation selecting step comprises:
15. The process of selecting the memory area to be allocated when the class file is executed by the memory allocation operation instruction detected by the memory allocation operation detection step is performed when the class file is loaded. The program execution method described.
前記メモリ割り当て操作検出ステップによって検出され
た前記メモリ割り当て操作命令によって前記クラスファ
イルの実行時に割り当てるべき前記メモリ領域を選択す
る処理を、前記メモリ割り当て操作命令を含むメソッド
の初回あるいは所定回毎に行うことを特徴とする、請求
項14に記載のプログラム実行方法。26. The memory allocation selecting step comprises:
Performing a process of selecting the memory area to be allocated at the time of execution of the class file by the memory allocation operation instruction detected by the memory allocation operation detection step, every time the method including the memory allocation operation instruction is performed or every predetermined number of times. 15. The program execution method according to claim 14, wherein:
ムを所定のコンパイラによりコンパイルすることによっ
て得られたクラスファイルを、複数の領域に分けられた
メモリを用いて処理するコンピュータが実行するプログ
ラムであって、 前記クラスファイルに記述されたメモリ割り当て操作命
令を検出するメモリ割り当て操作検出ステップと、 前記メモリ割り当て操作検出ステップによって検出され
た前記メモリ割り当て操作命令を解析し、該メモリ割り
当て操作命令によって前記クラスファイルの実行時に割
り当てるべき前記メモリ領域を選択するメモリ割り当て
選択ステップと、 前記メモリ割り当て選択ステップによって選択された前
記メモリ領域と前記メモリ割り当て操作命令とを対応づ
けたメモリ割り当て情報を記憶するメモリ割り当て情報
記憶ステップと、 前記クラスファイルを実行する命令実行ステップと、 前記命令実行ステップにおける前記クラスファイル中の
前記メモリ割り当て操作命令の実行時に、前記メモリ割
り当て情報に基づいて該メモリ割り当て操作命令に対応
した前記メモリ領域を前記命令実行ステップに対して指
示するメモリ割り当て実行ステップとを含む、プログラ
ム。27. A program executed by a computer that processes a class file obtained by compiling a program in an object-oriented language by a predetermined compiler, using a memory divided into a plurality of areas, wherein the class A memory allocation operation detection step of detecting a memory allocation operation instruction described in a file, analyzing the memory allocation operation instruction detected by the memory allocation operation detection step, and executing the class file by the memory allocation operation instruction. A memory allocation selecting step of selecting the memory area to be allocated, and a memory allocation storing memory allocation information in which the memory area selected by the memory allocation selecting step and the memory allocation operation instruction are associated with each other. An allocation information storage step, an instruction execution step for executing the class file, and a memory allocation operation instruction based on the memory allocation information when the memory allocation operation instruction in the class file is executed in the instruction execution step. A memory allocation executing step of instructing the corresponding memory area to the instruction executing step.
によって構成され実行環境におけるクラスライブラリで
ある組込みクラスファイルを予め格納する組込みクラス
ファイル記憶ステップと、 予め前記組込みクラスファイルを解析することによっ
て、前記メモリ割り当て操作命令によって前記クラスフ
ァイルの実行時に割り当てるべき前記メモリ領域を選択
する基準を示す選択補佐情報を記憶する選択補佐情報記
憶ステップとをさらに含み、 前記メモリ割り当て選択ステップは、前記選択補佐情報
記憶ステップに記憶された前記選択補佐情報に基づい
て、前記メモリ割り当て操作検出ステップによって検出
された前記メモリ割り当て操作命令によって前記クラス
ファイルの実行時に割り当てるべき前記メモリ領域を選
択する、請求項27に記載のプログラム。28. A built-in class file storing step of pre-storing a built-in class file which is a class library in an execution environment and is constituted by at least one fixed class file, and the memory allocation operation by analyzing the built-in class file beforehand. Further comprising a selection assistant information storage step of storing selection assistant information indicating a criterion for selecting the memory area to be allocated at the time of executing the class file by an instruction, the memory allocation selection step being stored in the selection assistant information storage step. The memory area to be allocated at the time of execution of the class file is selected by the memory allocation operation instruction detected by the memory allocation operation detection step based on the selected assisting information. The placing of the program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002038533A JP2003241967A (en) | 2002-02-15 | 2002-02-15 | Program execution device, its method and program executed therein |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002038533A JP2003241967A (en) | 2002-02-15 | 2002-02-15 | Program execution device, its method and program executed therein |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2003241967A true JP2003241967A (en) | 2003-08-29 |
Family
ID=27779818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002038533A Withdrawn JP2003241967A (en) | 2002-02-15 | 2002-02-15 | Program execution device, its method and program executed therein |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2003241967A (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007004506A (en) * | 2005-06-24 | 2007-01-11 | Mitsubishi Electric Corp | Storage management device |
JP2007183905A (en) * | 2005-12-09 | 2007-07-19 | Internatl Business Mach Corp <Ibm> | Method for operating character string, program, and information processor |
JP2009037547A (en) * | 2007-08-03 | 2009-02-19 | Hitachi Ltd | Memory management method and computer using the method |
JP2010044532A (en) * | 2008-08-11 | 2010-02-25 | Hitachi Ltd | Memory management method, memory management program and memory management device |
WO2011045949A1 (en) * | 2009-10-13 | 2011-04-21 | 株式会社日立製作所 | Memory management method, memory management program, and information processing device |
US8275812B2 (en) | 2005-12-09 | 2012-09-25 | International Business Machines Corporation | Method to reduce wasted character data areas of java strings |
JP2012234567A (en) * | 2012-08-08 | 2012-11-29 | Hitachi Ltd | Memory management method, computer and program |
JP2014523022A (en) * | 2011-06-20 | 2014-09-08 | マイクロソフト コーポレーション | Computer-implemented method and computer system |
-
2002
- 2002-02-15 JP JP2002038533A patent/JP2003241967A/en not_active Withdrawn
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007004506A (en) * | 2005-06-24 | 2007-01-11 | Mitsubishi Electric Corp | Storage management device |
US8275812B2 (en) | 2005-12-09 | 2012-09-25 | International Business Machines Corporation | Method to reduce wasted character data areas of java strings |
JP2007183905A (en) * | 2005-12-09 | 2007-07-19 | Internatl Business Mach Corp <Ibm> | Method for operating character string, program, and information processor |
JP2009037547A (en) * | 2007-08-03 | 2009-02-19 | Hitachi Ltd | Memory management method and computer using the method |
US8589653B2 (en) | 2007-08-03 | 2013-11-19 | Hitachi, Ltd. | Memory management method and computer using the method |
US8397044B2 (en) | 2007-08-03 | 2013-03-12 | Hitachi, Ltd. | Memory management method and computer using the method |
JP2010044532A (en) * | 2008-08-11 | 2010-02-25 | Hitachi Ltd | Memory management method, memory management program and memory management device |
JP4555879B2 (en) * | 2008-08-11 | 2010-10-06 | 株式会社日立製作所 | MEMORY MANAGEMENT METHOD, MEMORY MANAGEMENT PROGRAM, AND MEMORY MANAGEMENT DEVICE |
JP2011085985A (en) * | 2009-10-13 | 2011-04-28 | Hitachi Ltd | Memory management method, memory management program, and information processor |
WO2011045949A1 (en) * | 2009-10-13 | 2011-04-21 | 株式会社日立製作所 | Memory management method, memory management program, and information processing device |
JP2014523022A (en) * | 2011-06-20 | 2014-09-08 | マイクロソフト コーポレーション | Computer-implemented method and computer system |
US9785470B2 (en) | 2011-06-20 | 2017-10-10 | Microsoft Technology Licensing, Llc | Memory management model and interface for unmodified applications |
JP2012234567A (en) * | 2012-08-08 | 2012-11-29 | Hitachi Ltd | Memory management method, computer and program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5139987B2 (en) | Extensible metadata | |
US6820101B2 (en) | Methods and apparatus for optimizing garbage collection using separate heaps of memory for storing local objects and non-local objects | |
US8453128B2 (en) | Method and system for implementing a just-in-time compiler | |
US6757890B1 (en) | Methods and apparatus for enabling local Java object allocation and collection | |
US8438468B2 (en) | Annotation management | |
US20060026575A1 (en) | Method and system of adaptive dynamic compiler resolution | |
US7406684B2 (en) | Compiler, dynamic compiler, and replay compiler | |
EP3642709B1 (en) | Differentiated static analysis for dynamic code optimization | |
US8578339B2 (en) | Automatically adding bytecode to a software application to determine database access information | |
JP5583514B2 (en) | Compiling method for optimizing binary code, compiler system thereof, and computer program | |
GB2365553A (en) | Trace information in a virtual machine | |
US8056061B2 (en) | Data processing device and method using predesignated register | |
US6581077B2 (en) | Method and apparatus for storing short-lived objects in a virtual machine | |
US7458071B2 (en) | Compilation method, compiler apparatus and compiler | |
US20120185450A1 (en) | Method and system to handle java class versioning | |
JP2003241967A (en) | Program execution device, its method and program executed therein | |
JP5489884B2 (en) | Instruction execution device, instruction execution method, and instruction execution program | |
JP2000330793A (en) | Device and method for converting program | |
US7831964B2 (en) | Program automatic converting method and program automatic converting device | |
US7451437B2 (en) | Compiler device, program, and recording medium | |
JP4768984B2 (en) | Compiling method, compiling program, and compiling device | |
US9218191B2 (en) | Information processing apparatus and program and method for adjusting initial array size | |
US8245206B2 (en) | System and method for efficient string concatenation in a virtual machine environment | |
US7568185B1 (en) | Mechanism for program-assisted tracing actions | |
JP2007226784A (en) | Calling method of in-lined method, and java virtual machine using it |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20050124 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20060626 |