The following is a summary of the individual's understanding of the deep Java virtual machine
Basic concepts:
A Java Virtual machine can refer to an abstract specification, or to a specific implementation, or to a Java virtual machine instance.
Virtual Machine life cycle:
The bounden duty of a Java Virtual machine instance is to be responsible for running a Java program. When a Java program is started, a virtual machine instance is born. The program shuts down and the virtual machine instance is also extinct. If you run three Java programs on the same computer, you will get three instances of the Java virtual machine. Each Java program runs with its own instance of the Java virtual machine.
A Java Virtual machine instance runs a Java program by calling the main () method.
The main task of the garbage collector is to automatically reclaim the memory of objects referenced by programs that are no longer running. In addition, it is possible to move those objects that are still in use to reduce fragmentation.
Before talking about garbage collection, first understand the internal architecture of the Java Virtual machine, as shown in
The middle dashed box part is the run Time data region, which consists of 5 parts, namely the method area, heap, stack, program counter and local method stack.
1. Program counter
For a running Java program, each of these threads has its own PC register, which is created when the thread is started.
Its role can be seen as the position indicator of the current bytecode execution.
2. Local Method Stack
Any local method interface will use the local method stack. When the thread calls the local method, the virtual opportunity creates a new stack frame and presses the Java stack, but when it calls the local method, the virtual opportunity keeps the Java stack intact and no longer presses the new frame in the thread's Java stack. A virtual machine is simply a dynamic connection and invokes the specified local method directly.
3. Method area
In a Java virtual machine, information about the loaded type is stored in memory that is logically referred to as the method area. class variables (static variables) are also stored in the method area. The method area is thread-shared and must be designed to be thread-safe.
4.java Stack
When a new thread is started, the Java Virtual machine assigns it a Java stack, and the Java stack saves the thread's running state in frames. The virtual machine only performs two operations directly on the Java stack: the stack and the stack in frames.
The method that a thread is executing is called the current method of the thread, the stack frame used by the current method is called the current frame, the class to which the current method belongs is called the current class, and the current class's Chang is called the current constant pool.
When a thread executes a method, it keeps track of the current class and the current constant pool.
All data on the Java stack is thread-private, and no thread can access the stack data of another thread, so there is no need to take into account the access synchronization of data in multi-threaded stacks.
5.java Heap
All class instances and arrays created by the Java program at run time are placed in the same heap. Each Java program is exclusive to one instance of the virtual machine----they do not interfere with each other, and there is only one heap space in a Java virtual machine instance, and all threads share the heap, in which case the synchronization of the heap data must be considered in the case of multithreading.
Java-Class life cycle
A Java mount, connect, initialize see:
The class is initialized and can be used, the program can access its static field, call its static method, or create its instance, the object.
The class is instantiated in 4 ways: 1. Explicit new 2.Class, or the Newinstance () method of the Construtor object, 3. Invokes the Clone () method of any existing object 4.objectinputstream.getobject () method to deserialize.
Once an object is no longer referenced, it needs to be garbage collected. As for How,when, the garbage collection depends on the virtual machines. The garbage collection mechanism for common hotspot virtual machines is described below.
Java Virtual Machine Understanding Discovery 1