Movatterモバイル変換


[0]ホーム

URL:


CN103729235A - Java virtual machine (JVM) and compiling method thereof - Google Patents

Java virtual machine (JVM) and compiling method thereof
Download PDF

Info

Publication number
CN103729235A
CN103729235ACN201310722834.9ACN201310722834ACN103729235ACN 103729235 ACN103729235 ACN 103729235ACN 201310722834 ACN201310722834 ACN 201310722834ACN 103729235 ACN103729235 ACN 103729235A
Authority
CN
China
Prior art keywords
virtual machine
java
methods
java virtual
parallel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201310722834.9A
Other languages
Chinese (zh)
Inventor
鲍翀
王彦茹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co LtdfiledCriticalHuawei Technologies Co Ltd
Priority to CN201310722834.9ApriorityCriticalpatent/CN103729235A/en
Publication of CN103729235ApublicationCriticalpatent/CN103729235A/en
Pendinglegal-statusCriticalCurrent

Links

Images

Landscapes

Abstract

Translated fromChinese

本发明实施例提供了一种Java虚拟机的编译方法和Java虚拟机,该方法包括:在Java虚拟机启动对第一Java方法的编译后根据该Java虚拟机的方法计数器总表获取多个方法,该多个方法包括该第一Java方法,该方法计数器总表用于记录该Java虚拟机的所有Java方法的方法计数器的当前值;并行启动多个任务对该多个方法进行编译,该多个任务中的每一个任务通过即时JIT编译器编译该多个方法之一;在该多个任务的编译完成后刷新该方法计数器总表,并用该多个方法编译后的本地代码的指针替换该多个方法对应的方法入口。本发明实施例的JVM及其编译方法,能够以较低的成本提高JVM的编译效率,优化JVM的性能。

Embodiments of the present invention provide a method for compiling a Java virtual machine and a Java virtual machine. The method includes: after the Java virtual machine starts compiling the first Java method, a plurality of methods are obtained according to the method counter table of the Java virtual machine. , the multiple methods include the first Java method, the method counter table is used to record the current value of the method counters of all the Java methods of the Java virtual machine; starting multiple tasks in parallel to compile the multiple methods, the multiple methods Each task in each task compiles one of the plurality of methods through the just-in-time JIT compiler; after the compilation of the plurality of tasks is completed, the method counter summary table is refreshed, and the pointer of the native code compiled by the plurality of methods is used to replace the method Method entry corresponding to multiple methods. The JVM and the compiling method thereof in the embodiment of the present invention can improve the compiling efficiency of the JVM and optimize the performance of the JVM at a relatively low cost.

Description

The Compilation Method of Java Virtual Machine and Java Virtual Machine
Technical field
The embodiment of the present invention relates to computer network field, and more specifically, relates to a kind of Compilation Method and Java Virtual Machine of Java Virtual Machine.
Background technology
JAVA is the software development technique that current user is maximum, usable range is the widest, and the constraint that it has broken away from hardware platform, has realized the ideal that program " is once write, everywhere operation ".And in the meantime, JAVA virtual machine (JVM) is performed meritorious deeds never to be obliterated.
The JAVA program that user writes, only need to become JAVA bytecode (.class file) at native compile.When then this bytecode program is placed on and carries out on different platforms, by the Java Virtual Machine on platform (Java Virtual Machine, JVM), bytecode is translated into the instruction relevant to platform, operate on platform.Exactly because have JVM to realize the separation of program and operating system, thereby realized the platform-neutral of JAVA.
JVM comprises interpreter (Interpreter), instant (JIT) compiler and runtime system (Run Time) three parts.
JAVA program is carried out by interpreter interprets at first, when finding certain method or code block, calls when very frequent JVM, will be compiled into the machine code relevant with local platform with JIT, and carry out various levels of optimization, when carrying out the method, directly call local code, to improve executing efficiency.
A kind of method of distributed jit compiling, by several computing nodes (Computer Node) networking, form a parallel computer (Parallel Computer), while having procedure triggers jit compiling on each Computer Node, can send jit compiling request, then application management device (Application Manager) response request, this program is divided into many usability of program fragments, by overall joint network (Global Combining Network), is distributed to other Computer Node parallel compilation simultaneously.After having compiled, the local code of generation is passed to the sender of JIT request by Global Combining Network, realized thus the parallel object of accelerating jit compiling.Its shortcoming is to need a lot of computer networkings become a Parallel Computer, and data are transmitted between Computer Node by Global Combining Network, consuming time larger, and it is more complicated to cut apart, transmit, collect data.
The another kind of method of being carried out specially jit compiling by JIT server, sets up a special jit compiling system (Dedicated JIT Compilation System) server.Each client will need the JAVA bytecode of jit compiling and the JAVA platform information of client to pass to server by network (Network), its powerful compilation facility of server by utilizing is the bytecode program compilation one-tenth local code relevant with customer platform, then by Network, passes the local code of finishing back client.Its shortcoming is to set up special Dedicated JIT Compilation System server, the realization of this server, controls more complicated, and data need to transmit between Network, consuming time larger.
Need a kind of method of optimizing JVM compiling, can when improving compile efficiency, avoid higher hardware cost.
Summary of the invention
The embodiment of the present invention provides a kind of Compilation Method and Java Virtual Machine of Java Virtual Machine, can improve with lower cost the compile efficiency of Java Virtual Machine, optimizes the performance of Java Virtual Machine.
First aspect, a kind of Compilation Method of Java Virtual Machine is provided, the method comprises: after Java Virtual Machine starts the compiling of a Java method, according to the method counter summary table of this Java Virtual Machine, obtain multiple methods, the plurality of method comprises a Java method, and the method counter summary table is used for the currency of the method counter of all Java methods that record this Java Virtual Machine; The multiple tasks of parallel starting compile the plurality of method, and each task in the plurality of task compiles one of the plurality of method by instant JIT compiler; After the compiling of the plurality of task completes, refresh the method counter summary table, and the pointer of the local code after compiling by the plurality of method is replaced method entrance corresponding to the plurality of method.
In conjunction with first aspect, in the possible implementation of the first, according to the method counter summary table of this Java Virtual Machine, obtain multiple method specific implementations and be: obtain all methods in the method counter summary table.
In conjunction with first aspect, in the possible implementation of the second, according to the method counter summary table of this Java Virtual Machine, obtaining multiple method specific implementations is: obtain the top n focus method in all methods of the method counter summary table, N is greater than 1, and N is less than the methodical number of the method counter summary table.
In conjunction with the possible implementation of the second of the possible implementation of the first of first aspect or first aspect or first aspect, in the third possible implementation, the multiple tasks of parallel starting compile specific implementation to the plurality of method: the bytecode program of each method in the plurality of method is pressed in a Kernel of GPU of this Java Virtual Machine place main frame, with the JIT compiler that this Kernel is carried out, the method that is pressed into this Kernel is compiled, wherein this Kernel is set to carry out the JIT compiler of this Java Virtual Machine when creating.
In conjunction with the possible implementation of the second of the possible implementation of the first of first aspect or first aspect or first aspect, in the 4th kind of possible implementation, the multiple tasks of parallel starting compile specific implementation to the plurality of method: according to the plurality of method, a new thread of opening the CPU of this Java Virtual Machine place main frame using the bytecode of each method in the plurality of method as parameter, this new thread is used for calling JIT compiler Compilation Method.
In conjunction with the possible implementation of the first of first aspect or first aspect to any possible implementation in the 4th kind of possible implementation of first aspect, in the 5th kind of possible implementation, the method also comprises: in the process the plurality of method being compiled in the multiple tasks of this parallel starting, walk abreast and carry out a Java method with interpretive mode.
In conjunction with the possible implementation of the first of first aspect or first aspect to any possible implementation in the 4th kind of possible implementation of first aspect, in the 6th kind of possible implementation, the method also comprises: in the process the plurality of method being compiled in the multiple tasks of this parallel starting, stop carrying out a Java method with interpretive mode.
In conjunction with the possible implementation of the first of first aspect or first aspect to any possible implementation in the 6th kind of possible implementation of first aspect, in the 7th kind of possible implementation, the method also comprises: after the compiling of the plurality of task completes, refresh the method counter summary table, and before replacing method entrance corresponding to the plurality of method with the pointer of the local code after the plurality of method compiling, the plurality of task is carried out to thread synchronization, this thread synchronization operation is carried out later step again for controlling after the compilation operations of the plurality of task all completes.
Second aspect, a kind of Java Virtual Machine is provided, comprise interpreter, compiler and run-time system, this compiler comprises instant JIT compiler, this Java Virtual Machine also comprises parallel compilation unit, acquiring unit and updating block, wherein: this acquiring unit is for after starting the compiling of a Java method at this Java Virtual Machine, according to the method counter summary table of this Java Virtual Machine, obtain multiple methods, the plurality of method comprises a Java method, the method counter summary table is used for the currency of the method counter of all Java methods that record this Java Virtual Machine, this parallel compilation unit compiles the plurality of method for the multiple tasks of parallel starting, and each task in the plurality of task compiles one of the plurality of method by JIT compiler, this updating block is for refresh the method counter summary table after the compiling of the plurality of task completes, and the pointer of the local code after compiling by the plurality of method is replaced method entrance corresponding to the plurality of method.
In conjunction with second aspect, in the possible implementation of the first, specific implementation is: this acquiring unit is specifically for obtaining all methods in the method counter summary table.
In conjunction with second aspect, in the possible implementation of the second, specific implementation is: this acquiring unit is specifically for obtaining the top n focus method in all methods of the method counter summary table, and N is greater than 1, and N is less than the methodical number of the method counter summary table.
In conjunction with the possible implementation of the second of the possible implementation of the first of second aspect or second aspect or second aspect, in the third possible implementation, specific implementation is: this parallel compilation unit is specifically for being pressed into the bytecode program of each method in the plurality of method in a Kernel of GPU of this Java Virtual Machine place main frame, with the JIT compiler that this Kernel is carried out, the method that is pressed into this Kernel is compiled, wherein this Kernel is set to carry out the JIT compiler of this Java Virtual Machine when creating.
In conjunction with the possible implementation of the second of the possible implementation of the first of second aspect or second aspect or second aspect, in the 4th kind of possible implementation, specific implementation is: this parallel compilation unit is specifically for according to the plurality of method, a new thread of opening the CPU of this Java Virtual Machine place main frame using the bytecode of each method in the plurality of method as parameter, this new thread is used for calling JIT compiler Compilation Method.
In conjunction with the possible implementation of the first of second aspect or second aspect to any possible implementation in the 4th kind of possible implementation of second aspect, in the 5th kind of possible implementation, specific implementation is: this Java Virtual Machine also comprises parallel control unit, for the process the plurality of method being compiled in the multiple tasks of this parallel starting, also by this interpreter is parallel, with interpretive mode, carry out a Java method.
In conjunction with the possible implementation of the first of second aspect or second aspect to any possible implementation in the 4th kind of possible implementation of second aspect, in the 6th kind of possible implementation, specific implementation is: this Java Virtual Machine also comprises parallel control unit, for the process the plurality of method being compiled in the multiple tasks of this parallel starting, stop this interpreter and carry out a Java method with interpretive mode.
In conjunction with the possible implementation of the first of second aspect or second aspect to any possible implementation in the 6th kind of possible implementation of second aspect, in the 7th kind of possible implementation, specific implementation is: this Java Virtual Machine also comprises lock unit, this lock unit, for by the plurality of task is carried out to synchronous operation, is controlled this updating block and is carried out and upgrade operation after the compiling of the plurality of task completes.
Based on above technical scheme, the Compilation Method of the Java Virtual Machine of the embodiment of the present invention and Java Virtual Machine, by starting multiple methods of multiple tasks in parallel compiling java applets, thereby can improve with lower cost the compile efficiency of Java Virtual Machine, optimize the performance of Java Virtual Machine.
Accompanying drawing explanation
In order to be illustrated more clearly in the technical scheme of the embodiment of the present invention, to the accompanying drawing of required use in embodiment or description of the Prior Art be briefly described below, apparently, accompanying drawing in the following describes is only some embodiments of the present invention, for those of ordinary skills, do not paying under the prerequisite of creative work, can also obtain according to these accompanying drawings other accompanying drawing.
Fig. 1 is the Compilation Method process flow diagram of embodiment of the present invention JVM.
Fig. 2 is a particular flow sheet of embodiment of the present invention JVM Compilation Method.
Fig. 3 is another particular flow sheet of embodiment of the present invention JVM Compilation Method.
Fig. 4 is another particular flow sheet of embodiment of the present invention JVM Compilation Method.
Fig. 5 is another particular flow sheet of embodiment of the present invention JVM Compilation Method.
Fig. 6 is the structural representation of embodiment of the present invention JVM.
Fig. 7 is another structural representation of embodiment of the present invention JVM.
Embodiment
Below in conjunction with the accompanying drawing in the embodiment of the present invention, the technical scheme in the embodiment of the present invention is clearly and completely described, obviously, described embodiment is the present invention's part embodiment, rather than whole embodiment.Based on the embodiment in the present invention, those of ordinary skills, not making the every other embodiment obtaining under creative work prerequisite, belong to the scope of protection of the invention.
To facilitate understanding of the present embodiment of the invention, first at this, introduce the several key elements that can introduce in embodiment of the present invention description.
In existing system, JVM can comprise interpreter, compiler and run-time system.Wherein, compiler comprises JIT compiler.
Interpreter, for making run-time system carry out the method for JVM with interpretive mode.
JIT compiler, for immediately the bytecode of the method for JVM is compiled into local code (Native Code) when carrying out, makes run-time system with local code, carry out the method for JVM.
Run-time system, for carrying out the method for Java.
In fact, JVM also can comprise Classloader etc., but this and method of the present invention are irrelevant, and this is not described.
Open computing language (Open Computing Language, OpenCL), open, a free standard towards the general object multiple programming of heterogeneous system, also be a unified programmed environment, be convenient to software developer and write the code of high-efficient light for high performance computing service device, Desktop Computing system, handheld device.
Bytecode (Byte-code), a kind ofly comprise executive routine, by sequence op code/data to the binary file forming.Bytecode is a kind of intermediate code, more abstract than machine code, is often counted as the binary file that comprises an executive routine, more as an object model.
Thread: thread is called as Lightweight Process (Lightweight Process, LWP) is sometimes the minimum unit that program is carried out stream.The thread of a standard is by Thread Id, present instruction pointer (PC), set of registers and storehouse composition.
Graphic process unit (Graphic Processing Unit, GPU), is " heart " of display card, is equivalent to the effect of CPU in computer, and it has determined class and most of performance of this video card, is also the differentiation criterion of 2D display card and 3D display hardware simultaneously.
Open computing language (Open Computing Language, OPENCL) is a framework for heterogeneous platform coding, and this heterogeneous platform can be by CPU, the processor composition of GPU or other types.OPENCL is by a function moving on OPENCL equipment for writing kernels() language (based on C99) and one group for the API that defines and control platform, form.OPENCL provides the mechanism of the parallel computation based on division of tasks and Data Segmentation.
Fig. 1 is the Compilation Method process flow diagram of embodiment of the present invention JVM, and the method for Fig. 1 is carried out by JVM.
101, after Java Virtual Machine starts the compiling of a Java method, according to the method counter summary table of JVM, obtain multiple methods.
Wherein, the plurality of method comprises a Java method, and the method counter summary table is used for the currency of the method counter of all Java methods that record this Java Virtual Machine.
102, the multiple tasks of parallel starting compile the plurality of method.
Wherein, each task in the plurality of task compiles one of the plurality of method by the instant JIT compiler of JVM.
103, after the compiling of the plurality of task completes, refresh the method counter summary table, and the pointer of the local code after compiling by the plurality of method is replaced method entrance corresponding to the plurality of method.
In the embodiment of the present invention, by starting multiple methods of multiple tasks in parallel compiling java applets, can improve with lower cost the compile efficiency of JVM, optimize the performance of JVM.
Optionally, as an embodiment, step 101 can be embodied as: obtain all methods in the method counter summary table.
Alternatively, as another embodiment, step 101 can be embodied as: obtain the top n focus method in all methods of the method counter summary table.Wherein, N is greater than 1, and N is less than the methodical number of the method counter summary table.
Alternatively, as an embodiment, step 102 can be embodied as: the bytecode program of each method in the plurality of method is pressed in a Kernel of GPU of this Java Virtual Machine place main frame, so that a JIT compiler in Kernel is compiled the method that is pressed into this Kernel.
Alternatively, as another embodiment, step 102 can be embodied as: according to the plurality of method, open a new thread of CPU using the bytecode of each method in the plurality of method as parameter, this new thread is used for calling JIT compiler Compilation Method.
Alternatively, as an embodiment, the method also comprises: in the process the plurality of method being compiled in the multiple tasks of this parallel starting, walk abreast and carry out a Java method with interpretive mode.
Alternatively, as another embodiment, the method also comprises: in the process the plurality of method being compiled in the multiple tasks of this parallel starting, stop carrying out a Java method with interpretive mode.
Alternatively, before step 103, the method also comprises: the plurality of task is carried out to synchronous operation.
Wherein, this synchronous operation is carried out later step again for controlling after the compilation operations of the plurality of task all completes.
Below, in conjunction with specific embodiments, the method for the embodiment of the present invention is further described.
Fig. 2 is a particular flow sheet of embodiment of the present invention Java Virtual Machine Compilation Method.
201, JVM carries out a Java method entrance.
When the runtime system of JVM is carried out the method entrance of a Java, need to whether exist compiled version to determine the step that needs execution according to method.
It should be noted that in the embodiment of the present invention, a Java method can refer to any the pending method in JVM.
202, whether there is compiled version.
If JVM finds that a Java method exists compiled version, perform step 213.
If JVM finds that a Java method does not exist compiled version, perform step 203.
203, method call Counter Value adds 1.
The method call Counter Value of the one Java method adds 1.
204, judge whether to compile a Java method.
In prior art, can judge whether to trigger by several different methods the compilation process of a Java method.
A kind of judgment mode of the embodiment of the present invention, can judge whether to compile a Java method by the hot point inspection based on sampling.The stack top of each thread of JVM meeting periodic test, if the Java method of discovery often appears at stack top, and reaches predetermined number of times, and that just assert that a Java method is the focus method that needs compiling, and then initiates to compiler initiation requirement for compiler.
The another kind of judgment mode of the embodiment of the present invention, the hot point inspection of count enable device judges whether to compile a Java method.If the method call counter of Java method (Invocation Counter) and back edge counter (Back Edge Counter) sum is greater than predetermined threshold value, assert that this Java method is the focus method that needs compiling, and then initiate to initiate requirement for compiler to compiler.
Method call counter, for adding up the call number of performed certain method of process of JVM.In prior art, method call counter is not that statistical method is called absolute number of times, a but relative frequency of carrying out, exceed certain hour, if method call number of times is not enough to allow it submit to compiler, counter will be reduced half, and this phenomenon is called temperature decay (Counter Decay), carry out the action of temperature decay and carry out in passing when garbage reclamation, and be just called as partly and decline the cycle during this period of time.
Back edge counter is for the execution number of times of statistical method loop body.The instruction that bytecode runs into the rear redirect of the control flow direction is called back edge.
Certainly, also may exist other to judge whether the method compiling, this is not restricted for the embodiment of the present invention.
If need to compile a Java method, perform step 205, otherwise, execution step 214.
Above-mentioned steps 201-204 belongs to the content of prior art of the present invention, and specific implementation can be with reference to prior art, and the embodiment of the present invention is only briefly described at this.
205, to compiler, submit requirement for compiler to.
When a Java method triggers after compiling condition, the run-time system of JVM can be submitted requirement for compiler to the compiler of JVM.
The compiler of JVM receives after requirement for compiler, can start compilation process, execution step 206.
Meanwhile, JVM also can carry out a Java method, i.e. executed in parallel step 214 by interpreter with interpretive mode concurrently.
206, open OpenCL thread.
The compiler of JVM receives after requirement for compiler, can open OpenCL thread, compiles.
207, according to method counter summary table, find top n focus method.
According to method counter summary table, can find the focus method that comes top N from the method district of JVM (Method Area).Obviously, this top n focus method must comprise a Java method.
208, the bytecode program of top n focus method is pressed into GPU Kernel.
Obtain after top n focus method, OpenCL thread can first create N GPU Kernel in GPU, and the bytecode program of each method in this top n focus method is pressed into respectively to N GPU Kernel.Wherein, each GPU Kernel is set to carry out JIT compiler.
It should be noted that the GPU that the embodiment of the present invention is mentioned, refer to the GPU that supports isomery processing, for example graphics processing unit (General Purpose GPU, GPGPU) etc., lower same.
209, each Kernel is compiled into local code by method separately.
210, thread synchronization.
Carry out thread synchronization, control and after each GPU Kernel has compiled, carry out again counter summary table and refresh.
211, method for refreshing counter summary table.
After having compiled, the method counter of Compilation Method is set to 0, comprises the method counter of a Java method is set to 0.
212, with local code pointer replacement method entrance.
Now, can carry out pointer replacement to the method entrance of all Compilation Methods, with compiling after local code replace corresponding method entrance.
213, carry out the local code version after a Java method compiling.
After having compiled, carry out the local code version after a Java method compiling.
After being finished, execution step 215.
214, with interpretive mode, carry out a Java method.
When a Java method does not reach compiling condition, can with interpretive mode, carry out a Java method by interpreter.
When a Java method reaches compiling condition, can, in the process of compiling, continue with parallel mode, by interpreter, with interpretive mode, carry out a Java method.
215, the one Java methods are returned.
After the one Java method operation, return.
Fig. 3 is another particular flow sheet of embodiment of the present invention Java Virtual Machine Compilation Method.
301, JVM carries out a Java method entrance.
When the runtime system of JVM is carried out the method entrance of a Java, need to whether exist compiled version to determine the step that needs execution according to method.
302, whether there is compiled version.
If JVM finds that a Java method exists compiled version, perform step 313.
If JVM finds that a Java method does not exist compiled version, perform step 303.
303, method call Counter Value adds 1.
The method call Counter Value of the one Java method adds 1.
304, judge whether to compile a Java method.
If need to compile a Java method, perform step 305, otherwise, execution step 314.
305, to compiler, submit requirement for compiler to.
When a Java method triggers after compiling condition, the run-time system of JVM can be submitted requirement for compiler to the compiler of JVM.
The compiler of JVM receives after requirement for compiler, can start compilation process, execution step 306.
Now, JVM stops carrying out a Java method with interpretive mode.
306, open OpenCL thread.
The compiler of JVM receives after requirement for compiler, can open OpenCL thread, compiles.
307, according to method counter summary table, find top n focus method.
According to method counter summary table, can find the focus method that comes top N from the Method Area of JVM.
308, the bytecode program of top n focus method is pressed into GPU Kernel.
Obtain after top n focus method, OpenCL thread can first create N GPU Kernel in GPU, and the bytecode program of each method in this top n focus method is pressed into respectively in N GPU Kernel.Wherein, each GPU Kernel is set to carry out JIT compiler.
309, each Kernel is compiled into local code by method separately.
310, thread synchronization.
Carry out thread synchronization, control and after each GPU Kernel has compiled, carry out again counter summary table and refresh.
311, method for refreshing counter summary table.
After having compiled, the method counter of Compilation Method is set to 0, comprises a Java method
312, with local code pointer replacement method entrance.
Now, can carry out pointer replacement to the method entrance of all Compilation Methods, with compiling after local code replace corresponding method entrance.
313, carry out the local code version after a Java method compiling.
After having compiled, carry out the local code version after a Java method compiling.
After being finished, execution step 315.
314, with interpretive mode, carry out a Java method.
When a Java method does not reach compiling condition, can with interpretive mode, carry out a Java method by interpreter.
315, the one Java methods are returned.
After the one Java method operation, return.
Difference embodiment illustrated in fig. 3 and embodiment illustrated in fig. 2 is, the compilation phase no longer by interpreter with interpretive mode manner of execution.
Fig. 4 is another particular flow sheet of embodiment of the present invention Java Virtual Machine Compilation Method.
401, JVM carries out a Java method entrance.
When the runtime system of JVM is carried out the method entrance of a Java, need to whether exist compiled version to determine the step that needs execution according to method.
402, whether there is compiled version.
If JVM finds that a Java method exists compiled version, perform step 412.
If JVM finds that a Java method does not exist compiled version, perform step 403.
403, method call Counter Value adds 1.
The method call Counter Value of the one Java method adds 1.
404, judge whether to compile a Java method.
If need to compile a Java method, perform step 405, otherwise, execution step 413.
405, to compiler, submit requirement for compiler to.
When a Java method triggers after compiling condition, the run-time system of JVM can be submitted requirement for compiler to the compiler of JVM.
The compiler of JVM receives after requirement for compiler, can start compilation process, execution step 406.
Meanwhile, JVM also can carry out a Java method, i.e. executed in parallel step 413 by interpreter with interpretive mode concurrently.
406, open OpenCL thread.
The compiler of JVM receives after requirement for compiler, can open OpenCL thread, compiles.
407, methodical institute bytecode program is pressed into GPU Kernel.
OpenCL thread can create according to the method number of method counter summary table the GPUKernel of corresponding number, and the methodical bytecode program in method counter summary table is pressed into respectively in GPUKernel.Wherein, each GPU Kernel is set to carry out JIT compiler.
408, each Kernel is compiled into local code by method separately.
409, thread synchronization.
Carry out thread synchronization, control and after each Kernel has compiled, carry out again counter summary table and refresh.
410, method for refreshing counter summary table.
After having compiled, the method counter of Compilation Method is set to 0, comprises a Java method
411, with local code pointer replacement method entrance.
Now, can carry out pointer replacement to the method entrance of all Compilation Methods, with compiling after local code replace corresponding method entrance.
412, carry out the local code version after a Java method compiling.
After having compiled, carry out the local code version after a Java method compiling.
After being finished, execution step 414.
413, with interpretive mode, carry out a Java method.
When a Java method does not reach compiling condition, can with interpretive mode, carry out a Java method by interpreter.
When a Java method reaches compiling condition, can, in the process of compiling, continue with parallel mode, by interpreter, with interpretive mode, carry out a Java method.
414, the one Java methods are returned.
After the one Java method operation, return.
Difference embodiment illustrated in fig. 4 and embodiment illustrated in fig. 2 is, the compilation phase compiles all methods.
Fig. 5 is another particular flow sheet of embodiment of the present invention Java Virtual Machine Compilation Method.
501, JVM carries out a Java method entrance.
When the runtime system of JVM is carried out the method entrance of a Java, need to whether exist compiled version to determine the step that needs execution according to method.
502, whether there is compiled version.
If JVM finds that a Java method exists compiled version, perform step 512.
If JVM finds that a Java method does not exist compiled version, perform step 503.
503, method call Counter Value adds 1.
The method call Counter Value of the one Java method adds 1.
504, judge whether to compile a Java method.
If need to compile a Java method, perform step 505, otherwise, execution step 513.
505, to compiler, submit requirement for compiler to.
When a Java method triggers after compiling condition, the run-time system of JVM can be submitted requirement for compiler to the compiler of JVM.
The compiler of JVM receives after requirement for compiler, can start compilation process, execution step 506.
Meanwhile, JVM also can carry out a Java method, i.e. executed in parallel step 513 by interpreter with interpretive mode concurrently.
506, according to method counter summary table, find top n focus method.
According to method counter summary table, can find the focus method that comes top N from the Method Area of JVM.
507, open N thread, call JIT compiler compiling top n focus method.
Obtain, after top n focus method, can opening N thread dispatching JIT compiler, and the bytecode program of each method in top n focus method is imported in thread as parameter.
508, each thread is compiled into local code by method separately.
509, thread synchronization.
Carry out thread synchronization, control and after each thread has compiled, carry out again counter summary table and refresh.
510, method for refreshing counter summary table.
After having compiled, the method counter of Compilation Method is set to 0, comprises a Java method
511, with local code pointer replacement method entrance.
Now, can carry out pointer replacement to the method entrance of all Compilation Methods, with compiling after local code replace corresponding method entrance.
512, carry out the local code version after a Java method compiling.
After having compiled, carry out the local code version after a Java method compiling.
After being finished, execution step 514.
513, with interpretive mode, carry out a Java method.
When a Java method does not reach compiling condition, can with interpretive mode, carry out a Java method by interpreter.
When a Java method reaches compiling condition, can, in the process of compiling, continue with parallel mode, by interpreter, with interpretive mode, carry out a Java method.
514, the one Java methods are returned.
After the one Java method operation, return.
Difference embodiment illustrated in fig. 5 and embodiment illustrated in fig. 2 is, the compilation phase compiles method by opening multiple thread dispatching JIT compilers.
Fig. 6 is the structural representation of embodiment of the present invention JVM600.JTV600 comprises run-time system 610, interpreter 620 and compiler 630, and wherein compiler 630 can comprise JIT compiler 631.In addition, as shown in Figure 6, JTV600 also can comprise acquiring unit 641, parallel compilation unit 642 and the updating block 643 in dashed region 640.Wherein, in dashedregion 640, be newly-increased logical block.
Acquiring unit 641, obtains multiple methods for the method counter summary table according to this Java Virtual Machine.
Parallel compilation unit 642, compiles the plurality of method for the multiple tasks of parallel starting.
Wherein, each task in the plurality of task compiles one of the plurality of method by JIT compiler 631.
Concrete, this task can be the thread in CPU, or the Kernel in GPU.
Updating block 643, refreshes the method counter summary table for after completing in the compiling of the plurality of task, and the pointer of the local code after compiling by the plurality of method is replaced method entrance corresponding in the plurality of method.
In the embodiment of the present invention, JVM600, by starting multiple methods of multiple tasks in parallel compiling java applets, can improve with lower cost the compile efficiency of JVM, optimizes the performance of JVM.
Optionally, as an embodiment, acquiring unit 641 is specifically for obtaining all methods in the method counter summary table.
Alternatively, as another embodiment, acquiring unit 641 is specifically for obtaining the top n focus method in all methods of the method counter summary table, and N is greater than 1, and N is less than the methodical number of the method counter summary table.
Alternatively, as an embodiment, parallel compilation unit 642 is specifically for being pressed into the bytecode program of each method in the plurality of method in a Kernel of GPU of this Java Virtual Machine place main frame, so that a JIT compiler 631 in Kernel is compiled the method that is pressed into this Kernel, wherein Kernel is set to carry out the JIT compiler 631 of JVM600 when creating.
Alternatively, as another embodiment, parallel compilation unit 642 is specifically for according to the plurality of method, using the bytecode of each method in the plurality of method as parameter, open a new thread of the CPU of this Java Virtual Machine place main frame, this new thread is for calling JIT compiler 631 Compilation Methods of JVM600.
Alternatively, as shown in Figure 7, JVM600 also can comprise parallel control unit 644.Alternatively, as an embodiment,parallel control unit 644 is used in the process that the multiple tasks of this parallel starting compile the plurality of method, also by this interpreter is parallel, with interpretive mode, carries out a Java method.Alternatively, as another embodiment,parallel control unit 644 is used in the process that the multiple tasks of this parallel starting compile the plurality of method, stops this interpreter and carries out a Java method with interpretive mode.
Alternatively, as shown in Figure 7, JVM600 also can comprise lock unit 645, for by the plurality of task is carried out to synchronous operation, controls updating block 643 and carries out and upgrade operation after the compiling of the plurality of task completes.
JVM600 also can execution graph 1 method, and possess JVM at Fig. 1 to function embodiment illustrated in fig. 5, specific implementation can be referring to figs. 1 to embodiment illustrated in fig. 5, the embodiment of the present invention does not repeat them here.
In concrete application, the multiple logical blocks in dashedregion 640 can have multiple specific implementation.For example, the plurality of logical block can be combined into a Parallel Scheduling module, as one, is present in JVM with run-time system, interpreter and the similar module of compiler.Or parallel compilation unit 642 can be arranged in the compiler 630 of JVM, all the other logical blocks are arranged in the run-time system 610 of JVM, or, all logic modules are all arranged in the run-time system 610 of JVM, and all logic modules are all arranged in the compiler 630 of JVM, etc.Concrete way of realization also may have multiple, and the embodiment of the present invention is given an example no longer one by one.
Those of ordinary skills can recognize, unit and the algorithm steps of each example of describing in conjunction with embodiment disclosed herein, can realize with the combination of electronic hardware or computer software and electronic hardware.These functions are carried out with hardware or software mode actually, depend on application-specific and the design constraint of technical scheme.Professional and technical personnel can realize described function with distinct methods to each specifically should being used for, but this realization should not thought and exceeds scope of the present invention.
Those skilled in the art can be well understood to, and for convenience and simplicity of description, the specific works process of the system of foregoing description, device and unit, can, with reference to the corresponding process in preceding method embodiment, not repeat them here.
In the several embodiment that provide in the application, should be understood that disclosed system, apparatus and method can realize by another way.For example, device embodiment described above is only schematic, for example, the division of described unit, be only that a kind of logic function is divided, during actual realization, can have other dividing mode, for example multiple unit or assembly can in conjunction with or can be integrated into another system, or some features can ignore, or do not carry out.Another point, shown or discussed coupling each other or direct-coupling or communication connection can be by some interfaces, indirect coupling or the communication connection of device or unit can be electrically, machinery or other form.
The described unit as separating component explanation can or can not be also physically to separate, and the parts that show as unit can be or can not be also physical locations, can be positioned at a place, or also can be distributed in multiple network element.Can select according to the actual needs some or all of unit wherein to realize the object of the present embodiment scheme.
In addition, the each functional unit in each embodiment of the present invention can be integrated in a processing unit, can be also that the independent physics of unit exists, and also can be integrated in a unit two or more unit.
If described function realizes and during as production marketing independently or use, can be stored in a computer read/write memory medium using the form of SFU software functional unit.Based on such understanding, the part that technical scheme of the present invention contributes to prior art in essence in other words or the part of this technical scheme can embody with the form of software product, this computer software product is stored in a storage medium, comprise that some instructions (can be personal computers in order to make a computer equipment, server, or the network equipment etc.) carry out all or part of step of method described in each embodiment of the present invention.And aforesaid storage medium comprises: various media that can be program code stored such as USB flash disk, portable hard drive, ROM (read-only memory) (ROM, Read-Only Memory), random access memory (RAM, Random Access Memory), magnetic disc or CDs.
The above; be only the specific embodiment of the present invention, but protection scope of the present invention is not limited to this, any be familiar with those skilled in the art the present invention disclose technical scope in; can expect easily changing or replacing, within all should being encompassed in protection scope of the present invention.Therefore, protection scope of the present invention should described be as the criterion with the protection domain of claim.

Claims (16)

Translated fromChinese
1.一种Java虚拟机的编译方法,其特征在于,包括:1. A method for compiling a Java virtual machine, characterized in that, comprising:在Java虚拟机启动对第一Java方法的编译后根据所述Java虚拟机的方法计数器总表获取多个方法,所述多个方法包括所述第一Java方法,所述方法计数器总表用于记录所述Java虚拟机的所有Java方法的方法计数器的当前值;After the Java virtual machine starts compiling the first Java method, multiple methods are obtained according to the method counter table of the Java virtual machine, the multiple methods include the first Java method, and the method counter table is used for Record the current value of the method counter of all Java methods of the Java virtual machine;并行启动多个任务对所述多个方法进行编译,所述多个任务中的每一个任务通过即时JIT编译器编译所述多个方法之一;Starting multiple tasks in parallel to compile the multiple methods, each of the multiple tasks compiling one of the multiple methods through a just-in-time JIT compiler;在所述多个任务的编译完成后刷新所述方法计数器总表,并用所述多个方法编译后的本地代码的指针替换所述多个方法对应的方法入口。After the compilation of the multiple tasks is completed, the method counter total table is refreshed, and the method entries corresponding to the multiple methods are replaced with the pointers of the compiled local codes of the multiple methods.2.如权利要求1所述的方法,其特征在于,所述根据所述Java虚拟机的方法计数器总表获取多个方法包括:获取所述方法计数器总表中的所有方法。2. The method according to claim 1, wherein said obtaining a plurality of methods according to the method counter table of the Java virtual machine comprises: obtaining all methods in the method counter table.3.如权利要求1所述的方法,其特征在于,所述根据所述Java虚拟机的方法计数器总表获取多个方法包括:获取所述方法计数器总表的所有方法中的前N个热点方法,N大于1,且N小于所述方法计数器总表的所有方法的个数。3. The method according to claim 1, wherein said acquisition of a plurality of methods according to the method counter summary table of the Java virtual machine comprises: obtaining the first N hotspots in all methods of the method counter summary table method, N is greater than 1, and N is less than the number of all methods in the total method counter table.4.如权利要求1至3任一项所述的方法,其特征在于,所述并行启动多个任务对所述多个方法进行编译包括:将所述多个方法中的每一个方法的字节码程序压入所述Java虚拟机所在主机的图形处理器GPU的一个内核Kernel中,以使得所述Kernel执行的JIT编译器对压入所述Kernel的方法进行编译,其中所述Kernel在创建时被设置为执行所述Java虚拟机的JIT编译器。4. The method according to any one of claims 1 to 3, wherein said starting multiple tasks in parallel to compile said multiple methods comprises: converting the word of each method in said multiple methods The section code program is pushed into a kernel Kernel of the graphics processor GPU of the host computer where the Java virtual machine is located, so that the JIT compiler executed by the Kernel compiles the method pushed into the Kernel, wherein the Kernel is created is set to execute the JIT compiler of the Java virtual machine.5.如权利要求1至3任一项所述的方法,其特征在于,所述并行启动多个任务对所述多个方法进行编译包括:根据所述多个方法,将所述多个方法中每一个方法的字节码作为参数开启所述Java虚拟机所在主机的中央处理器CPU的一个新线程,所述新线程用于调用JIT编译器编译方法。5. The method according to any one of claims 1 to 3, wherein said starting multiple tasks in parallel to compile said multiple methods comprises: according to said multiple methods, compiling said multiple methods The bytecode of each method in the method is used as a parameter to open a new thread of the central processing unit CPU of the host computer where the Java virtual machine is located, and the new thread is used to call the JIT compiler to compile the method.6.如权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:在所述并行启动多个任务对所述多个方法进行编译的过程中,并行以解释方式执行所述第一Java方法。6. The method according to any one of claims 1 to 5, characterized in that, the method further comprises: during the process of starting multiple tasks in parallel to compile the multiple methods, parallelly interpreting Execute the first Java method.7.如权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:在所述并行启动多个任务对所述多个方法进行编译的过程中,停止以解释方式执行所述第一Java方法。7. The method according to any one of claims 1 to 5, characterized in that, the method further comprises: during the process of starting multiple tasks in parallel to compile the multiple methods, stop interpreting Execute the first Java method.8.如权利要求1至7任一项所述的方法,其特征在于,在所述多个任务的编译完成后刷新所述方法计数器总表,并用所述多个方法编译后的本地代码的指针替换所述多个方法对应的方法入口之前,所述方法还包括:8. The method according to any one of claims 1 to 7, characterized in that, after the compilation of the multiple tasks is completed, the method counter summary table is refreshed, and the local codes compiled by the multiple methods are used Before the pointer replaces the method entries corresponding to the multiple methods, the method further includes:对所述多个任务进行同步操作,所述同步操作用于控制所述多个任务的编译操作都完成后再执行以后的步骤。A synchronous operation is performed on the multiple tasks, and the synchronous operation is used to control that subsequent steps are executed after the compiling operations of the multiple tasks are completed.9.一种Java虚拟机,包括解释器、编译器和运行期系统,所述编译器包括即时JIT编译器,其特征在于,所述Java虚拟机还包括并行编译单元,获取单元和更新单元,其中:9. A Java virtual machine, comprising an interpreter, a compiler and a runtime system, the compiler comprising a real-time JIT compiler, characterized in that, the Java virtual machine also comprises a parallel compilation unit, an acquisition unit and an update unit, in:所述获取单元用于在所述Java虚拟机启动对第一Java方法的编译后,根据所述Java虚拟机的方法计数器总表获取多个方法,所述多个方法包括所述第一Java方法,所述方法计数器总表用于记录所述Java虚拟机的所有Java方法的方法计数器的当前值;The obtaining unit is used to obtain multiple methods according to the method counter summary table of the Java virtual machine after the Java virtual machine starts compiling the first Java method, and the multiple methods include the first Java method , the method counter total table is used to record the current value of the method counters of all Java methods of the Java virtual machine;所述并行编译单元用于并行启动多个任务对所述多个方法进行编译,所述多个任务中的每一个任务通过JIT编译器编译所述多个方法之一;The parallel compilation unit is used to start multiple tasks in parallel to compile the multiple methods, and each task in the multiple tasks compiles one of the multiple methods through a JIT compiler;所述更新单元用于在所述多个任务的编译完成后刷新所述方法计数器总表,并用所述多个方法编译后的本地代码的指针替换所述多个方法对应的方法入口。The update unit is configured to refresh the method counter total table after the compilation of the multiple tasks is completed, and replace the method entries corresponding to the multiple methods with pointers to the compiled local codes of the multiple methods.10.如权利要求9所述的Java虚拟机,其特征在于,所述获取单元具体用于获取所述方法计数器总表中的所有方法。10. The Java virtual machine according to claim 9, wherein the obtaining unit is specifically configured to obtain all methods in the method counter total table.11.如权利要求9所述的Java虚拟机,其特征在于,所述获取单元具体用于获取所述方法计数器总表的所有方法中的前N个热点方法,N大于1,且N小于所述方法计数器总表的所有方法的个数。11. The Java virtual machine according to claim 9, wherein the obtaining unit is specifically used to obtain the first N hotspot methods in all methods of the method counter total table, N is greater than 1, and N is less than the specified The number of all methods in the total table of method counters.12.如权利要求9至11任一项所述的Java虚拟机,其特征在于,所述并行编译单元具体用于将所述多个方法中的每一个方法的字节码程序压入所述Java虚拟机所在主机的图形处理器GPU的一个内核Kernel中,以使得所述Kernel执行的JIT编译器对压入所述Kernel的方法进行编译,其中所述Kernel在创建时被设置为执行所述Java虚拟机的JIT编译器。12. The Java virtual machine according to any one of claims 9 to 11, wherein the parallel compilation unit is specifically configured to push the bytecode program of each method in the plurality of methods into the In a kernel Kernel of the graphics processor GPU of the host machine where the Java virtual machine is located, the JIT compiler executed by the Kernel compiles the method pushed into the Kernel, wherein the Kernel is set to execute the Kernel when it is created. JIT compiler for the Java virtual machine.13.如权利要求9至11任一项所述的Java虚拟机,其特征在于,所述并行编译单元具体用于根据所述多个方法,将所述多个方法中每一个方法的字节码作为参数开启所述Java虚拟机所在主机的中央处理器CPU的一个新线程,所述新线程用于调用JIT编译器编译方法。13. The Java virtual machine according to any one of claims 9 to 11, wherein the parallel compilation unit is specifically configured to, according to the multiple methods, convert the bytes of each method in the multiple methods into The code is used as a parameter to open a new thread of the central processing unit CPU of the host computer where the Java virtual machine is located, and the new thread is used to call the JIT compiler compilation method.14.如权利要求9至13任一项所述的Java虚拟机,其特征在于,所述Java虚拟机还包括并行控制单元,用于在所述并行启动多个任务对所述多个方法进行编译的过程中,还通过所述解释器并行以解释方式执行所述第一Java方法。14. The Java virtual machine according to any one of claims 9 to 13, characterized in that, the Java virtual machine also includes a parallel control unit, which is used to execute the multiple methods when multiple tasks are started in parallel. During the compilation process, the interpreter is also used to execute the first Java method in parallel in an interpreted manner.15.如权利要求9至13任一项所述的Java虚拟机,其特征在于,所述Java虚拟机还包括并行控制单元,用于在所述并行启动多个任务对所述多个方法进行编译的过程中,停止所述解释器以解释方式执行所述第一Java方法。15. The Java virtual machine according to any one of claims 9 to 13, characterized in that, the Java virtual machine also includes a parallel control unit, which is used to execute the multiple methods when multiple tasks are started in parallel. During the compilation process, the interpreter is stopped to execute the first Java method in an interpreted manner.16.如权利要求9至15任一项所述的Java虚拟机,其特征在于,所述Java虚拟机还包括同步单元,所述同步单元用于通过对所述多个任务进行同步操作,控制所述更新单元在所述多个任务的编译完成后再执行更新操作。16. The Java virtual machine according to any one of claims 9 to 15, wherein the Java virtual machine further comprises a synchronization unit, and the synchronization unit is used to control the tasks by synchronizing the multiple tasks. The update unit executes the update operation after the compilation of the multiple tasks is completed.
CN201310722834.9A2013-12-242013-12-24Java virtual machine (JVM) and compiling method thereofPendingCN103729235A (en)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
CN201310722834.9ACN103729235A (en)2013-12-242013-12-24Java virtual machine (JVM) and compiling method thereof

Applications Claiming Priority (1)

Application NumberPriority DateFiling DateTitle
CN201310722834.9ACN103729235A (en)2013-12-242013-12-24Java virtual machine (JVM) and compiling method thereof

Publications (1)

Publication NumberPublication Date
CN103729235Atrue CN103729235A (en)2014-04-16

Family

ID=50453318

Family Applications (1)

Application NumberTitlePriority DateFiling Date
CN201310722834.9APendingCN103729235A (en)2013-12-242013-12-24Java virtual machine (JVM) and compiling method thereof

Country Status (1)

CountryLink
CN (1)CN103729235A (en)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
CN104536797A (en)*2015-01-142015-04-22大唐微电子技术有限公司Java program precompiling method and precompiler
CN105589729A (en)*2015-12-282016-05-18北京锐安科技有限公司Dynamic compiling method and device based on embedded virtual machine
WO2016149892A1 (en)*2015-03-232016-09-29Intel CorporationShadow command ring for graphics processor virtualization
CN106325963A (en)*2015-06-162017-01-11龙芯中科技术有限公司Self-adaptive dynamic compiling scheduling method and device
CN107729118A (en)*2017-09-252018-02-23复旦大学Towards the method for the modification Java Virtual Machine of many-core processor
CN108139896A (en)*2015-08-092018-06-08甲骨文国际公司 Extended virtual machine instruction set architecture
CN108304246A (en)*2016-09-292018-07-20联芯科技有限公司Identify the method and apparatus of file destination
CN108536514A (en)*2017-03-012018-09-14龙芯中科技术有限公司A kind of recognition methods of hotspot approach and device
CN109542443A (en)*2017-07-272019-03-29阿里巴巴集团控股有限公司Compilation Method and device, terminal, the data processing method of application program
CN109542731A (en)*2018-11-282019-03-29北京物资学院A kind of performance monitoring method of the progressive lower brill of level towards GPU
CN110046025A (en)*2018-01-172019-07-23国际商业机器公司The lightweight jit compiling for short-term JVM is used on parallel distributed Computational frame
CN110275713A (en)*2019-07-022019-09-24四川长虹电器股份有限公司A kind of improved method of Java Virtual Machine rear end compiling
CN110689138A (en)*2018-12-292020-01-14北京中科寒武纪科技有限公司Operation method, device and related product
CN111258557A (en)*2020-01-162020-06-09Oppo(重庆)智能科技有限公司 Code processing method, apparatus, electronic device and computer readable medium
CN111352629A (en)*2018-12-242020-06-30北京奇虎科技有限公司 Method and device for optimizing program calling
WO2020135567A1 (en)*2018-12-282020-07-02Alibaba Group Holding LimitedOffload controller control of programmable switch
US10871976B2 (en)2015-12-022020-12-22Huawei Technologies Co, Ltd.Method and apparatus for identifying hotspot intermediate code in language virtual machine
CN113342702A (en)*2021-08-042021-09-03武汉天喻信息产业股份有限公司Application program testing method, device, equipment and readable storage medium

Citations (8)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US6233725B1 (en)*1998-12-032001-05-15International Business Machines CorporationMethod and apparatus to coordinate and control the simultaneous use of multiple just in time compilers with a java virtual machine
US20040073904A1 (en)*2002-10-152004-04-15Nokia CorporationMethod and apparatus for accelerating program execution in platform-independent virtual machines
US6851109B1 (en)*1999-05-062005-02-01International Business Machines CorporationProcess and system for dynamically compiling a partially interpreted method
US20050155028A1 (en)*2004-01-142005-07-14Samsung Electronics Co., Ltd.System and method for increasing throughput of java program
CN1795434A (en)*2003-05-282006-06-28松下电器产业株式会社 Program execution control device, program execution control method, control program, and recording medium
CN1858708A (en)*2006-02-172006-11-08华为技术有限公司System, device and method for realizing JAVA application software compiling processing
CN103092618A (en)*2013-01-152013-05-08东南大学Dalvik virtual machine just-in-time compilation (JIT) acceleration method based on software Cache
US20130159983A1 (en)*2008-04-242013-06-20International Business Machines CorporationOptimizing just-in-time compiling for a java application executing on a compute node

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US6233725B1 (en)*1998-12-032001-05-15International Business Machines CorporationMethod and apparatus to coordinate and control the simultaneous use of multiple just in time compilers with a java virtual machine
US6851109B1 (en)*1999-05-062005-02-01International Business Machines CorporationProcess and system for dynamically compiling a partially interpreted method
US20040073904A1 (en)*2002-10-152004-04-15Nokia CorporationMethod and apparatus for accelerating program execution in platform-independent virtual machines
CN1795434A (en)*2003-05-282006-06-28松下电器产业株式会社 Program execution control device, program execution control method, control program, and recording medium
US20050155028A1 (en)*2004-01-142005-07-14Samsung Electronics Co., Ltd.System and method for increasing throughput of java program
CN1858708A (en)*2006-02-172006-11-08华为技术有限公司System, device and method for realizing JAVA application software compiling processing
US20130159983A1 (en)*2008-04-242013-06-20International Business Machines CorporationOptimizing just-in-time compiling for a java application executing on a compute node
CN103092618A (en)*2013-01-152013-05-08东南大学Dalvik virtual machine just-in-time compilation (JIT) acceleration method based on software Cache

Cited By (27)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
CN104536797B (en)*2015-01-142017-10-27大唐微电子技术有限公司A kind of java applet precompile method and pre compiler
CN104536797A (en)*2015-01-142015-04-22大唐微电子技术有限公司Java program precompiling method and precompiler
US10481937B2 (en)2015-03-232019-11-19Intel CorporationShadow command ring for graphics processor virtualization
WO2016149892A1 (en)*2015-03-232016-09-29Intel CorporationShadow command ring for graphics processor virtualization
CN106325963A (en)*2015-06-162017-01-11龙芯中科技术有限公司Self-adaptive dynamic compiling scheduling method and device
CN106325963B (en)*2015-06-162020-04-14龙芯中科技术有限公司Self-adaptive dynamic compiling and scheduling method and device
CN108139896A (en)*2015-08-092018-06-08甲骨文国际公司 Extended virtual machine instruction set architecture
US11385872B2 (en)2015-08-092022-07-12Oracle International CorporationExtending a virtual machine instruction set architecture
US10871976B2 (en)2015-12-022020-12-22Huawei Technologies Co, Ltd.Method and apparatus for identifying hotspot intermediate code in language virtual machine
CN105589729A (en)*2015-12-282016-05-18北京锐安科技有限公司Dynamic compiling method and device based on embedded virtual machine
CN108304246A (en)*2016-09-292018-07-20联芯科技有限公司Identify the method and apparatus of file destination
CN108536514A (en)*2017-03-012018-09-14龙芯中科技术有限公司A kind of recognition methods of hotspot approach and device
CN108536514B (en)*2017-03-012020-10-27龙芯中科技术有限公司Hot spot method identification method and device
CN109542443A (en)*2017-07-272019-03-29阿里巴巴集团控股有限公司Compilation Method and device, terminal, the data processing method of application program
CN107729118A (en)*2017-09-252018-02-23复旦大学Towards the method for the modification Java Virtual Machine of many-core processor
CN110046025B (en)*2018-01-172023-07-25国际商业机器公司Method, medium, computer system and system for restarting virtual machine
CN110046025A (en)*2018-01-172019-07-23国际商业机器公司The lightweight jit compiling for short-term JVM is used on parallel distributed Computational frame
CN109542731A (en)*2018-11-282019-03-29北京物资学院A kind of performance monitoring method of the progressive lower brill of level towards GPU
CN111352629A (en)*2018-12-242020-06-30北京奇虎科技有限公司 Method and device for optimizing program calling
WO2020135567A1 (en)*2018-12-282020-07-02Alibaba Group Holding LimitedOffload controller control of programmable switch
CN110689138A (en)*2018-12-292020-01-14北京中科寒武纪科技有限公司Operation method, device and related product
US11893414B2 (en)2018-12-292024-02-06Cambricon Technologies Corporation LimitedOperation method, device and related products
CN110275713A (en)*2019-07-022019-09-24四川长虹电器股份有限公司A kind of improved method of Java Virtual Machine rear end compiling
CN111258557A (en)*2020-01-162020-06-09Oppo(重庆)智能科技有限公司 Code processing method, apparatus, electronic device and computer readable medium
CN111258557B (en)*2020-01-162023-08-18Oppo(重庆)智能科技有限公司Code processing method, device, electronic equipment and computer readable medium
CN113342702A (en)*2021-08-042021-09-03武汉天喻信息产业股份有限公司Application program testing method, device, equipment and readable storage medium
CN113342702B (en)*2021-08-042021-11-16武汉天喻信息产业股份有限公司Application program testing method, device, equipment and readable storage medium

Similar Documents

PublicationPublication DateTitle
CN103729235A (en)Java virtual machine (JVM) and compiling method thereof
CN111770113B (en) A method for executing smart contracts, blockchain node and node device
CN111124656B (en) Methods, devices, and computer-readable storage media for allocating tasks to dedicated computing resources
EP3588285B1 (en)Sequence optimizations in a high-performance computing environment
Warneke et al.Exploiting dynamic resource allocation for efficient parallel data processing in the cloud
US9747086B2 (en)Transmission point pattern extraction from executable code in message passing environments
US8650538B2 (en)Meta garbage collection for functional code
Cheung et al.Automatic partitioning of database applications
CN101799760B (en)System and method of generating parallel simd code for an arbitrary target architecture
Hayashi et al.Machine-learning-based performance heuristics for runtime cpu/gpu selection
US10585653B2 (en)Declarative programming model with a native programming language
CN101681294A (en)Memory transaction grouping
US9244708B2 (en)Enhanced java array
CN109144648B (en)Method and system for uniformly performing feature extraction
US8887142B2 (en)Loop control flow diversion
US10891214B2 (en)Transferring a debug configuration amongst carrier threads for debugging a carried thread
US11474832B2 (en)Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
US10296363B2 (en)Tuning a virtual machine startup parameter
US10067867B2 (en)Performing garbage collection on an object array using array chunk references
Hu et al.A static timing analysis environment using Java architecture for safety critical real-time systems
US11556357B1 (en)Systems, media, and methods for identifying loops of or implementing loops for a unit of computation
CN114625376A (en)Data transfer mode conversion method and device, electronic equipment and readable storage medium
Kushsairy et al.Embedded vision: Enhancing embedded platform for face detection system
US11972242B2 (en)Runtime environment optimizer for JVM-style languages
McCartney et al.Stackless multi-threading for embedded systems

Legal Events

DateCodeTitleDescription
C06Publication
PB01Publication
C10Entry into substantive examination
SE01Entry into force of request for substantive examination
RJ01Rejection of invention patent application after publication

Application publication date:20140416

RJ01Rejection of invention patent application after publication

[8]ページ先頭

©2009-2025 Movatter.jp