JP5602597B2 - 外来情報を区分けすることにより仮想マシン・コードをメモリ最適化する方法、コンピュータ・プログラム、およびシステム - Google Patents
外来情報を区分けすることにより仮想マシン・コードをメモリ最適化する方法、コンピュータ・プログラム、およびシステム Download PDFInfo
- Publication number
- JP5602597B2 JP5602597B2 JP2010262977A JP2010262977A JP5602597B2 JP 5602597 B2 JP5602597 B2 JP 5602597B2 JP 2010262977 A JP2010262977 A JP 2010262977A JP 2010262977 A JP2010262977 A JP 2010262977A JP 5602597 B2 JP5602597 B2 JP 5602597B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- code
- location
- computer
- foreign
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Description
SourceFile:(1つのクラス当たり)パスを持たないソース・ファイル名(例えば、ClassName.java)
SourceDebugExtension:一般的に未使用
LineNumberTable:(1メソッド当たり)デバッガがステップ・スルーすべき行数、および例外スタック・トレースが印刷すべき行数(バイトコード・インデックスをソース・ファイルにおける行数にマップする)
LocalVariableTable:(1メソッド当たり)ステップ中のデバッガに対するローカル変数の名前、
LocalVariableTypeTable:(1メソッド当たり)汎用タイプ(および汎用のものだけ)の場合、ソース・ファイルにおけるローカル変数のタイプがVMにおけるタイプとは異なる。例えば、ソース・ファイル・タイプが汎用のハッシュ・テーブル<整数、ストリング>であってもよいが、仮想マシンはハッシュ・テーブルを見るであろう。
この情報はコードにおけるプログラム命令の正規の実行には不必要である。これは、それが一般的にはデバッグおよびスタック・トレースのためにしか使用されず、稼動プログラムでは他のいずれにも使用されないためである。
AnnotationDefault、
RuntimeVisibleAnnotations、
RuntimeInvisibleAnnotations、
RuntimeVisibleParameterAnnotations、
RuntimeInvisibleParameterAnnotations
さらに、Java技術に関連して、ソース情報223は、下記のような属性を含み得る。
EnclosingMethod::ローカル・クラスの囲みメソッドを識別する、
Signature: クラス、フィールド・タイプ、およびメソッドに対する汎用シグネチャを識別する、;
Deprecated: 非推奨のアイテムを識別する、
Synthetic:コンパイラ生成アイテムを識別する、
InnerClasses:内部および外部クラスの関係(ネストされたものおよび無名のものを含む)を識別する。
稼動中の仮想マシンはこの情報を必要としないので、この情報はコードにおけるプログラム命令の正規の実行にとって不必要である。この情報は一般にリフレクションのためにのみ使用される。従って、リフレクションを広範囲に利用するプログラムはこの情報の除去によって影響を受けることがあるが、一般には、ほとんどのプログラムが除去により影響されないであろう。
Claims (25)
- 仮想マシン・コードまたはインタープリットされたコードを最適化するための方法であって、
複数のプログラム命令と第1のタイプの非実行可能情報である第1の外来情報とを含むコードであって、仮想マシンによる実行のための言語で書かれたコードを受け取るステップと、
前記第1の外来情報を除去し、前記第1の外来情報のロケーションを参照するキーでもって前記第1の外来情報を置換することによって前記コードを修正するステップと、
修正コードを実行し、実行中に前記第1の外来情報を要求する事象が生じた場合、前記事象に応答して、前記キーを使って前記ロケーションにおける前記第1の外来情報を見つけ、前記ロケーションから前記第1の外来情報をロードするステップと
を含む、方法。 - 前記事象は障害であり、前記第1のタイプの非実行可能情報はデバッグ情報である、請求項1に記載の方法。
- 例外処理プロセスをインターセプトし、前記キーを使って前記例外処理プロセスを前記第1の外来情報のロケーションにリダイレクトするよう、前記複数のプログラム命令のうちの1つまたは複数個を修正するステップを更に含む、請求項2に記載の方法。
- 前記コードは第2の外来情報を含み、第2の外来情報は第2のタイプの非実行可能情報であり、前記第1のタイプおよび前記第2のタイプの非実行可能情報は異なる、請求項1に記載の方法。
- 前記第2のタイプの非実行可能情報はソース情報または注釈情報である、請求項4に記載の方法。
- 前記コードはJava(登録商標)クラス・ファイルまたはJavaArchive(JAR)ファイルであり、前記複数のプログラム命令はJavaバイトコード命令である、請求項1に記載の方法。
- 前記コードは.NETコード・ファイルであり、前記複数のプログラム命令はCommonIntermediate Language(CIL)バイトコード命令である、請求項1に記載の方法。
- 前記言語はインタープリットされた言語である、請求項1に記載の方法。
- 前記ロケーションは記憶ロケーションであり、
前記除去された第1の外来情報を前記記憶ロケーションに格納するステップを更に含む、
請求項1に記載の方法。 - 前記ロケーションは前記コードが格納される記憶ロケーションであり、前記ロードするステップは前記記憶ロケーションから前記コードをロードする、請求項1に記載の方法。
- 前記ロケーションは前記コードが検索され得るロケーションであり、前記ロードするステップは前記ロケーションから前記コードを検索する、請求項1に記載の方法。
- コンピュータ上で実行されるコンピュータ可読プログラムであって、
複数のプログラム命令と第1のタイプの非実行可能情報である第1の外来情報とを含むコードであって、仮想マシンによる実行のための言語で書かれたコードを前記コンピュータに受け取らせ、
前記第1の外来情報を除去し、前記第1の外来情報のロケーションを参照するキーでもって前記第1の外来情報を置換することによって前記コードを前記コンピュータに修正させ、
修正コードを前記コンピュータに実行させ、実行中に前記第1の外来情報を要求する事象が生じた場合、前記事象に応答して、前記キーを使って前記ロケーションにおける前記第1の外来情報を前記コンピュータに見つけさせ、前記ロケーションから前記第1の外来情報を前記コンピュータにロードさせる
コンピュータ可読プログラム。 - 前記事象は障害であり、前記第1のタイプの非実行可能情報はデバッグ情報であり、
例外処理プロセスをインターセプトし、前記キーを使って前記例外処理プロセスを前記第1の外来情報のロケーションにリダイレクトするよう、前記複数のプログラム命令のうちの1つまたは複数個を前記コンピュータに修正させる、請求項12に記載のコンピュータ可読プログラム。 - 前記ロケーションは記憶ロケーションであり、
前記除去された第1の外来情報を前記記憶ロケーションに、前記コンピュータに格納させる、請求項12に記載のコンピュータ可読プログラム。 - 前記ロケーションは前記コードが格納されるロケーションまたは前記コードが検索され得るロケーションであり、前記ロードすることは前記ロケーションから前記第1の外来情報を含む前記コードをロードすることを含む、請求項12に記載のコンピュータ可読プログラム。
- 前記仮想マシンはCommon Language Runtime(CLR)仮想マシンである、請求項12に記載のコンピュータ可読プログラム。
- 前記仮想マシンはJava VirtualMachine(JVM)である、請求項12に記載のコンピュータ可読プログラム。
- 前記言語はJavaScript(登録商標)である、請求項17に記載のコンピュータ可読プログラム。
- 前記コンピュータ可読プログラムはコンピュータ使用可能光学的記憶媒体に格納される、請求項12に記載のコンピュータ可読プログラム。
- 前記コンピュータ可読プログラムはハード・ディスクに格納される、請求項12に記載のコンピュータ可読プログラム。
- 複数のプログラム命令と第1のタイプの非実行可能情報である第1の外来情報とを含むコードであって、仮想マシンによる実行のための言語で書かれたコードをロードするためのロジックと、
前記第1の外来情報を除去し、前記第1の外来情報のロケーションを参照するキーでもって前記第1の外来情報置換することによって前記コードを修正するためのロジックと、
修正コードを実行し、実行中に前記第1の外来情報を要求する事象が生じた場合、前記事象に応答して、前記キーを使って前記第1の外来情報を前記ロケーションにおいて見つけ、前記ロケーションから前記第1の外来情報をロードするためのロジックと
で構成されたプロセッサを含む、システム。 - 前記事象は障害であり、前記第1のタイプの非実行可能情報はデバッグ情報であり、
前記プロセッサは、例外処理プロセスをインターセプトし、前記キーを使って前記例外処理プロセスを前記第1の外来情報のロケーションにリダイレクトするよう、前記複数のプログラム命令のうちの1つまたは複数個を修正するためのロジックで構成される、請求項21に記載のシステム。 - 前記ロケーションは記憶ロケーションであり、
前記プロセッサは、前記除去された第1の外来情報を前記記憶ロケーションに格納するためにロジックで構成される、請求項21に記載のシステム。 - 前記ロケーションは前記コードが格納されるロケーションまたは前記コードが検索され得るロケーションであり、前記ロードすることは前記ロケーションから前記第1の外来情報を含む前記コードをロードすることを含む、請求項21に記載のシステム。
- 前記仮想マシンはCommon Language Runtime(CLR)仮想マシンまたはJava Virtual Machine(JVM)である、請求項21に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/627206 | 2009-11-30 | ||
US12/627,206 US8627303B2 (en) | 2009-11-30 | 2009-11-30 | Memory optimization of virtual machine code by partitioning extraneous information |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011118901A JP2011118901A (ja) | 2011-06-16 |
JP5602597B2 true JP5602597B2 (ja) | 2014-10-08 |
Family
ID=44069822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010262977A Active JP5602597B2 (ja) | 2009-11-30 | 2010-11-25 | 外来情報を区分けすることにより仮想マシン・コードをメモリ最適化する方法、コンピュータ・プログラム、およびシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US8627303B2 (ja) |
JP (1) | JP5602597B2 (ja) |
KR (1) | KR101699981B1 (ja) |
CN (1) | CN102081546B (ja) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8701088B2 (en) * | 2010-05-28 | 2014-04-15 | Red Hat, Inc. | Generating backtracing information for software debugging of software programs running on virtual machines |
JP5466601B2 (ja) * | 2010-08-31 | 2014-04-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コード生成方法、システム及びプログラム |
US8375443B1 (en) * | 2011-09-27 | 2013-02-12 | Google Inc. | Code annotations for preventing access to unsafe functionality |
US9183113B2 (en) | 2011-09-29 | 2015-11-10 | Oracle International Corporation | Debugging analysis in running multi-user systems |
US9027075B2 (en) * | 2011-09-29 | 2015-05-05 | Oracle International Corporation | Enforcing security rules at runtime |
US9111033B2 (en) | 2012-04-17 | 2015-08-18 | International Business Machines Corporation | Compiling source code for debugging with user preferred snapshot locations |
US8910126B2 (en) | 2012-04-18 | 2014-12-09 | International Business Machines Corporation | Compiling source code for debugging with variable value restoration based on debugging user activity |
US9274772B2 (en) * | 2012-08-13 | 2016-03-01 | Microsoft Technology Licensing, Llc. | Compact type layouts |
US9122794B2 (en) | 2012-10-30 | 2015-09-01 | Oracle International Corporation | System and method for debugging domain specific languages |
US9104797B1 (en) * | 2013-03-21 | 2015-08-11 | Intuit Inc. | Efficient cloud-based annotation of crash reports |
CN103413069B (zh) * | 2013-07-08 | 2016-09-07 | 北京深思数盾科技股份有限公司 | 一种保护面向对象语言编写的软件的方法 |
CN103413073B (zh) * | 2013-07-09 | 2016-01-20 | 北京深思数盾科技有限公司 | 一种保护java可执行程序的方法及设备 |
CN103413075B (zh) * | 2013-07-10 | 2016-05-04 | 北京深思数盾科技股份有限公司 | 一种通过虚拟机保护java可执行程序的方法及设备 |
US9146834B2 (en) | 2013-08-22 | 2015-09-29 | Oracle International Corporation | Targeted cloud-based debugging |
US9721092B2 (en) | 2014-03-27 | 2017-08-01 | International Busines Machines Corporation | Monitoring an application in a process virtual machine |
US9772865B2 (en) * | 2015-02-23 | 2017-09-26 | Futurewei Technologies, Inc. | On-demand loading of dynamic scripting language code for reduced memory usage |
US9916220B2 (en) * | 2015-03-26 | 2018-03-13 | EMC IP Holding Company LLC | Smart logging of trace data for storage systems |
EP3311266A4 (en) * | 2015-07-17 | 2018-09-12 | Enhance, Inc. | A method and system for modifying machine instructions within compiled software |
US9626171B2 (en) | 2015-07-24 | 2017-04-18 | Oracle International Corporation | Composing a module system and a non-module system |
US10078497B2 (en) | 2015-07-24 | 2018-09-18 | Oracle International Corporation | Bridging a module system and a non-module system |
GB2541400B (en) * | 2015-08-17 | 2017-11-15 | Advanced Risc Mach Ltd | Tracing of exception handling events |
US10158647B2 (en) * | 2015-08-25 | 2018-12-18 | Oracle International Corporation | Permissive access control for modular reflection |
US10394528B2 (en) | 2016-03-30 | 2019-08-27 | Oracle International Corporation | Returning a runtime type loaded from an archive in a module system |
US10191753B2 (en) | 2016-03-30 | 2019-01-29 | Oracle International Corporation | Generating verification metadata and verifying a runtime type based on verification metadata |
US10387142B2 (en) | 2016-09-16 | 2019-08-20 | Oracle International Corporation | Using annotation processors defined by modules with annotation processors defined by non-module code |
US10282184B2 (en) | 2016-09-16 | 2019-05-07 | Oracle International Corporation | Metadata application constraints within a module system based on modular dependencies |
JP6845429B2 (ja) | 2017-03-15 | 2021-03-17 | 富士通株式会社 | コンパイラプログラム、情報処理装置およびコンパイル方法 |
US10848410B2 (en) | 2017-03-29 | 2020-11-24 | Oracle International Corporation | Ranking service implementations for a service interface |
US11720340B2 (en) | 2019-07-30 | 2023-08-08 | Hewlett-Packard Development Company, L.P. | Hash map of executable control blocks |
CN112566307B (zh) * | 2019-09-10 | 2022-11-04 | 酷矽半导体科技(上海)有限公司 | 安全显示***及安全显示方法 |
JP2023018290A (ja) * | 2021-07-27 | 2023-02-08 | 富士通株式会社 | 解析プログラム、解析装置、及び解析方法 |
CN115328690B (zh) * | 2022-10-13 | 2023-02-17 | 北京登临科技有限公司 | 异常处理方法、计算机可读介质及电子设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3352893B2 (ja) * | 1996-12-11 | 2002-12-03 | 株式会社日立製作所 | デバッグ情報作成方法、デバッグ方法及びデバッグシステム |
WO2000034866A1 (fr) * | 1998-12-07 | 2000-06-15 | Sony Corporation | Ordinateur, support d'enregistrement stockant un programme de traitement d'exceptions et procede de traitement d'exceptions |
JP2001236243A (ja) * | 2000-02-22 | 2001-08-31 | Nec Microsystems Ltd | デバッグ方法、および、デバッグ用プログラムを記録した記録媒体 |
US6857063B2 (en) | 2001-02-09 | 2005-02-15 | Freescale Semiconductor, Inc. | Data processor and method of operation |
JP4192519B2 (ja) * | 2002-07-24 | 2008-12-10 | 株式会社日立製作所 | 情報処理方法および装置 |
EP1387265A1 (en) | 2002-08-02 | 2004-02-04 | Telefonaktiebolaget L M Ericsson (Publ) | Optimised code generation |
US7225431B2 (en) | 2002-10-24 | 2007-05-29 | International Business Machines Corporation | Method and apparatus for setting breakpoints when debugging integrated executables in a heterogeneous architecture |
AU2002363920A1 (en) * | 2002-10-29 | 2004-05-25 | Freescale Semiconductor, Inc. | Method and apparatus for selectively optimizing interpreted language code |
US7707566B2 (en) | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US7631356B2 (en) * | 2005-04-08 | 2009-12-08 | Microsoft Corporation | System and method for foreign code detection |
US8453132B2 (en) * | 2006-07-28 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems |
US7475214B2 (en) * | 2006-08-16 | 2009-01-06 | International Business Machines Corporation | Method and system to optimize java virtual machine performance |
CN100485637C (zh) | 2006-10-13 | 2009-05-06 | 中兴通讯股份有限公司 | 一种基于嵌入式应用***实现硬件寄存器的方法 |
CN100474266C (zh) | 2007-04-24 | 2009-04-01 | 上海华龙信息技术开发中心 | 一种用于数字信号处理器的调试***及其调试方法 |
US8286152B2 (en) * | 2007-08-22 | 2012-10-09 | International Business Machines Corporation | Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance |
US20090172648A1 (en) * | 2007-12-28 | 2009-07-02 | Gerginov Georgi A | Byte code analysis library |
-
2009
- 2009-11-30 US US12/627,206 patent/US8627303B2/en active Active
-
2010
- 2010-11-15 CN CN2010105432287A patent/CN102081546B/zh active Active
- 2010-11-23 KR KR1020100116594A patent/KR101699981B1/ko active IP Right Grant
- 2010-11-25 JP JP2010262977A patent/JP5602597B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2011118901A (ja) | 2011-06-16 |
KR20110060822A (ko) | 2011-06-08 |
KR101699981B1 (ko) | 2017-01-26 |
CN102081546B (zh) | 2013-12-18 |
US20110131561A1 (en) | 2011-06-02 |
CN102081546A (zh) | 2011-06-01 |
US8627303B2 (en) | 2014-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5602597B2 (ja) | 外来情報を区分けすることにより仮想マシン・コードをメモリ最適化する方法、コンピュータ・プログラム、およびシステム | |
CN1108560C (zh) | 用于存储与多种编程语言相关的执行数据的方法和装置 | |
US8434057B2 (en) | Optimized implementation of breakpoint in java debugger agent | |
US8972960B2 (en) | Optimization of an application to reduce local memory usage | |
US20200249925A1 (en) | On-demand loading of dynamic scripting language code for reduced memory usage | |
US8549502B2 (en) | Compiler with user-defined type inference rules | |
KR20150024842A (ko) | 적응식 이식가능 라이브러리 | |
US20150121533A1 (en) | Dynamic analysis interpreter modification for application dataflow | |
CN108595187A (zh) | 安卓安装包集成软件开发工具包的法、装置及存储介质 | |
US10229045B2 (en) | Conditional stack frame allocation | |
US8769498B2 (en) | Warning of register and storage area assignment errors | |
JP5536593B2 (ja) | 最適化装置、最適化方法およびコンパイラ・プログラム | |
US9760282B2 (en) | Assigning home memory addresses to function call parameters | |
CN107077365B (zh) | 有选择地加载预编译的头部和/或其部分 | |
US11662983B2 (en) | Bytecode verification using class relationship caching | |
US20220308991A1 (en) | Test processing method and information processing apparatus | |
WO2019118338A1 (en) | Systems and methods for mapping software applications interdependencies | |
CN113139190A (zh) | 程序文件检测方法、装置、电子设备及存储介质 | |
CN112528273B (zh) | 医疗数据的探测方法、装置、介质及电子设备 | |
US20150220310A1 (en) | Object field optimization | |
CN114168489A (zh) | 一种函数信息获取方法、计算设备及存储介质 | |
CN114547559A (zh) | 符号混淆方法、装置、介质和计算设备 | |
CN116010100A (zh) | 区块链***中的合约调用方法、装置、设备及存储介质 | |
JP2017122949A (ja) | プログラムおよびコンピュータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130902 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140312 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140408 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140708 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140729 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140820 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5602597 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |