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
CN103729235A CN201310722834.9A CN201310722834A CN103729235A CN 103729235 A CN103729235 A CN 103729235A CN 201310722834 A CN201310722834 A CN 201310722834A CN 103729235 A CN103729235 A CN 103729235A
Authority
CN
China
Prior art keywords
java
virtual machine
java virtual
methods
compiling
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 Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310722834.9A priority Critical patent/CN103729235A/en
Publication of CN103729235A publication Critical patent/CN103729235A/en
Pending legal-status Critical Current

Links

Images

Abstract

An embodiment of the invention provides a Java virtual machine (JVM) and a compiling method thereof. The method includes: after initiating compiling of a first Java method on the Java virtual machine, acquiring multiple methods according to a method counter general table of the Java virtual machine, wherein the multiple methods include the first Java method, and the method counter general table is used for recording current values of method counters of all the Java methods of the Java virtual machine; initiating multiple tasks in parallel to compile the methods, wherein each task in the tasks compiles one of the methods through a JIT (just in time) compiler; after compiling of the methods is completed, refreshing the method counter general table, and replacing method entries, corresponding to the methods, with pointers of local codes of the compiled methods. By the JVM and the compiling method thereof, compiling efficiency of the JVM can be improved at low cost, and performance of the JVM is optimized.

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 dashed region 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 dashed region 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)

1. a Compilation Method for Java Virtual Machine, is characterized in that, comprising:
After starting the compiling of a Java method, Java Virtual Machine obtains multiple methods according to the method counter summary table of described Java Virtual Machine, described multiple method comprises a described Java method, and described method counter summary table is used for the currency of the method counter of all Java methods that record described Java Virtual Machine;
The multiple tasks of parallel starting compile described multiple methods, and each task in described multiple tasks is by one of described multiple methods of instant JIT compiler compiling;
After the compiling of described multiple tasks completes, refresh described method counter summary table, and the pointer of the local code after compiling by described multiple methods is replaced method entrance corresponding to described multiple methods.
2. the method for claim 1, is characterized in that, the described method counter summary table according to described Java Virtual Machine obtains multiple methods and comprises: obtain all methods in described method counter summary table.
3. the method for claim 1, it is characterized in that, the described method counter summary table according to described Java Virtual Machine obtains multiple methods and comprises: obtain the top n focus method in all methods of described method counter summary table, N is greater than 1, and N is less than the methodical number of described method counter summary table.
4. the method as described in claims 1 to 3 any one, it is characterized in that, the multiple tasks of described parallel starting compile and comprise described multiple methods: the bytecode program of each method in described multiple methods is pressed in a kernel Kernel of graphic process unit GPU of described Java Virtual Machine place main frame, with the JIT compiler that described Kernel is carried out, the method that is pressed into described Kernel is compiled, wherein said Kernel is set to carry out the JIT compiler of described Java Virtual Machine when creating.
5. the method as described in claims 1 to 3 any one, it is characterized in that, the multiple tasks of described parallel starting compile and comprise described multiple methods: according to described multiple methods, a new thread of opening the central processor CPU of described Java Virtual Machine place main frame using the bytecode of each method in described multiple methods as parameter, described new thread is used for calling JIT compiler Compilation Method.
6. the method as described in claim 1 to 5 any one, is characterized in that, described method also comprises: in the process described multiple methods being compiled in the multiple tasks of described parallel starting, walk abreast and carry out a described Java method with interpretive mode.
7. the method as described in claim 1 to 5 any one, is characterized in that, described method also comprises: in the process described multiple methods being compiled in the multiple tasks of described parallel starting, stop carrying out a described Java method with interpretive mode.
8. the method as described in claim 1 to 7 any one, it is characterized in that, after completing, the compiling of described multiple tasks refreshes described method counter summary table, and before replacing method entrance corresponding to described multiple methods with the pointer of the local code after described multiple method compilings, described method also comprises:
Described multiple tasks are carried out to synchronous operation, and described synchronous operation is carried out later step again for controlling after the compilation operations of described multiple tasks all completes.
9. a Java Virtual Machine, comprises interpreter, compiler and run-time system, and described compiler comprises instant JIT compiler, it is characterized in that, described Java Virtual Machine also comprises parallel compilation unit, acquiring unit and updating block, wherein:
Described acquiring unit is for after starting the compiling of a Java method at described Java Virtual Machine, according to the method counter summary table of described Java Virtual Machine, obtain multiple methods, described multiple method comprises a described Java method, and described method counter summary table is used for the currency of the method counter of all Java methods that record described Java Virtual Machine;
Described parallel compilation unit compiles described multiple methods for the multiple tasks of parallel starting, and each task in described multiple tasks compiles one of described multiple methods by JIT compiler;
Described updating block is for refresh described method counter summary table after the compiling of described multiple tasks completes, and the pointer of the local code after compiling by described multiple methods is replaced method entrance corresponding to described multiple methods.
10. Java Virtual Machine as claimed in claim 9, is characterized in that, described acquiring unit is specifically for obtaining all methods in described method counter summary table.
11. Java Virtual Machines as claimed in claim 9, it is characterized in that, described acquiring unit is specifically for obtaining the top n focus method in all methods of described method counter summary table, and N is greater than 1, and N is less than the methodical number of described method counter summary table.
12. Java Virtual Machines as described in claim 9 to 11 any one, it is characterized in that, described parallel compilation unit is specifically for being pressed into the bytecode program of each method in described multiple methods in a kernel Kernel of graphic process unit GPU of described Java Virtual Machine place main frame, with the JIT compiler that described Kernel is carried out, the method that is pressed into described Kernel is compiled, wherein said Kernel is set to carry out the JIT compiler of described Java Virtual Machine when creating.
13. Java Virtual Machines as described in claim 9 to 11 any one, it is characterized in that, described parallel compilation unit is specifically for according to described multiple methods, a new thread of opening the central processor CPU of described Java Virtual Machine place main frame using the bytecode of each method in described multiple methods as parameter, described new thread is used for calling JIT compiler Compilation Method.
14. Java Virtual Machines as described in claim 9 to 13 any one, it is characterized in that, described Java Virtual Machine also comprises parallel control unit, for the process described multiple methods being compiled in the multiple tasks of described parallel starting, also by described interpreter is parallel, with interpretive mode, carry out a described Java method.
15. Java Virtual Machines as described in claim 9 to 13 any one, it is characterized in that, described Java Virtual Machine also comprises parallel control unit, for the process described multiple methods being compiled in the multiple tasks of described parallel starting, stop described interpreter and carry out a described Java method with interpretive mode.
16. Java Virtual Machines as described in claim 9 to 15 any one, it is characterized in that, described Java Virtual Machine also comprises lock unit, described lock unit, for by described multiple tasks are carried out to synchronous operation, is controlled described updating block and is carried out and upgrade operation after the compiling of described multiple tasks completes.
CN201310722834.9A 2013-12-24 2013-12-24 Java virtual machine (JVM) and compiling method thereof Pending CN103729235A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310722834.9A CN103729235A (en) 2013-12-24 2013-12-24 Java virtual machine (JVM) and compiling method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310722834.9A CN103729235A (en) 2013-12-24 2013-12-24 Java virtual machine (JVM) and compiling method thereof

Publications (1)

Publication Number Publication Date
CN103729235A true CN103729235A (en) 2014-04-16

Family

ID=50453318

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310722834.9A Pending CN103729235A (en) 2013-12-24 2013-12-24 Java virtual machine (JVM) and compiling method thereof

Country Status (1)

Country Link
CN (1) CN103729235A (en)

Cited By (18)

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

Citations (8)

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

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233725B1 (en) * 1998-12-03 2001-05-15 International Business Machines Corporation Method and apparatus to coordinate and control the simultaneous use of multiple just in time compilers with a java virtual machine
US6851109B1 (en) * 1999-05-06 2005-02-01 International Business Machines Corporation Process and system for dynamically compiling a partially interpreted method
US20040073904A1 (en) * 2002-10-15 2004-04-15 Nokia Corporation Method and apparatus for accelerating program execution in platform-independent virtual machines
CN1795434A (en) * 2003-05-28 2006-06-28 松下电器产业株式会社 Program execution control device, program execution control method, control program and recording medium
US20050155028A1 (en) * 2004-01-14 2005-07-14 Samsung Electronics Co., Ltd. System and method for increasing throughput of java program
CN1858708A (en) * 2006-02-17 2006-11-08 华为技术有限公司 System, device and method for realizing JAVA application software compiling processing
US20130159983A1 (en) * 2008-04-24 2013-06-20 International Business Machines Corporation Optimizing just-in-time compiling for a java application executing on a compute node
CN103092618A (en) * 2013-01-15 2013-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 number Priority date Publication date Assignee Title
CN104536797B (en) * 2015-01-14 2017-10-27 大唐微电子技术有限公司 A kind of java applet precompile method and pre compiler
CN104536797A (en) * 2015-01-14 2015-04-22 大唐微电子技术有限公司 Java program precompiling method and precompiler
US10481937B2 (en) 2015-03-23 2019-11-19 Intel Corporation Shadow command ring for graphics processor virtualization
WO2016149892A1 (en) * 2015-03-23 2016-09-29 Intel Corporation Shadow command ring for graphics processor virtualization
CN106325963A (en) * 2015-06-16 2017-01-11 龙芯中科技术有限公司 Self-adaptive dynamic compiling scheduling method and device
CN106325963B (en) * 2015-06-16 2020-04-14 龙芯中科技术有限公司 Self-adaptive dynamic compiling and scheduling method and device
CN108139896A (en) * 2015-08-09 2018-06-08 甲骨文国际公司 EVM(extended virtual machine) instruction set framework
US11385872B2 (en) 2015-08-09 2022-07-12 Oracle International Corporation Extending a virtual machine instruction set architecture
US10871976B2 (en) 2015-12-02 2020-12-22 Huawei Technologies Co, Ltd. Method and apparatus for identifying hotspot intermediate code in language virtual machine
CN105589729A (en) * 2015-12-28 2016-05-18 北京锐安科技有限公司 Dynamic compiling method and device based on embedded virtual machine
CN108304246A (en) * 2016-09-29 2018-07-20 联芯科技有限公司 Identify the method and apparatus of file destination
CN108536514A (en) * 2017-03-01 2018-09-14 龙芯中科技术有限公司 A kind of recognition methods of hotspot approach and device
CN108536514B (en) * 2017-03-01 2020-10-27 龙芯中科技术有限公司 Hot spot method identification method and device
CN109542443A (en) * 2017-07-27 2019-03-29 阿里巴巴集团控股有限公司 Compilation Method and device, terminal, the data processing method of application program
CN107729118A (en) * 2017-09-25 2018-02-23 复旦大学 Towards the method for the modification Java Virtual Machine of many-core processor
CN110046025B (en) * 2018-01-17 2023-07-25 国际商业机器公司 Method, medium, computer system and system for restarting virtual machine
CN110046025A (en) * 2018-01-17 2019-07-23 国际商业机器公司 The lightweight jit compiling for short-term JVM is used on parallel distributed Computational frame
CN109542731A (en) * 2018-11-28 2019-03-29 北京物资学院 A kind of performance monitoring method of the progressive lower brill of level towards GPU
CN111352629A (en) * 2018-12-24 2020-06-30 北京奇虎科技有限公司 Optimization method and device for program call
WO2020135567A1 (en) * 2018-12-28 2020-07-02 Alibaba Group Holding Limited Offload controller control of programmable switch
CN110689138A (en) * 2018-12-29 2020-01-14 北京中科寒武纪科技有限公司 Operation method, device and related product
US11893414B2 (en) 2018-12-29 2024-02-06 Cambricon Technologies Corporation Limited Operation method, device and related products
CN110275713A (en) * 2019-07-02 2019-09-24 四川长虹电器股份有限公司 A kind of improved method of Java Virtual Machine rear end compiling
CN111258557A (en) * 2020-01-16 2020-06-09 Oppo(重庆)智能科技有限公司 Code processing method and device, electronic equipment and computer readable medium
CN111258557B (en) * 2020-01-16 2023-08-18 Oppo(重庆)智能科技有限公司 Code processing method, device, electronic equipment and computer readable medium
CN113342702A (en) * 2021-08-04 2021-09-03 武汉天喻信息产业股份有限公司 Application program testing method, device, equipment and readable storage medium
CN113342702B (en) * 2021-08-04 2021-11-16 武汉天喻信息产业股份有限公司 Application program testing method, device, equipment and readable storage medium

Similar Documents

Publication Publication Date Title
CN103729235A (en) Java virtual machine (JVM) and compiling method thereof
EP3588285B1 (en) Sequence optimizations in a high-performance computing environment
US8650538B2 (en) Meta garbage collection for functional code
US8195648B2 (en) Partitioned query execution in event processing systems
CN101799760B (en) System and method of generating parallel simd code for an arbitrary target architecture
US20170192761A1 (en) Dynamic data and compute resource elasticity
US20170192762A1 (en) Declarative programming model with a native programming language
Hayashi et al. Machine-learning-based performance heuristics for runtime cpu/gpu selection
CN101233489A (en) Adaptive process dispatch in a computer system having a plurality of processors
CN102279766B (en) Method and system for concurrently simulating processors and scheduler
US20090106730A1 (en) Predictive cost based scheduling in a distributed software build
CN109154908B (en) Dynamically sized locality with accurate garbage collection reporting
CN102707982A (en) Incremental generation of managed assemblies
CN105302717A (en) Detection method and apparatus for big data platform
CN105308578B (en) The diagnosis of state transformation
CN112041832A (en) Computing reuse in analytics job services
US9244708B2 (en) Enhanced java array
US8887142B2 (en) Loop control flow diversion
US11474832B2 (en) Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
CN100456238C (en) Method and apparatus for realizing distributed object persistence and compiling unit
CN110334031B (en) Memory allocation code detection method and device, computer equipment and storage medium
WO2023107789A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
CN114174983B (en) Method and system for optimized automatic verification of advanced constructs
US20120102473A1 (en) Abstract method removal for reduced memory footprint with optimizer tool
CN113260976A (en) Techniques for scheduling instructions in compiled source code

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20140416