Deep understanding of Java Virtual Machine-Chapter 2: deep understanding of Java Virtual Machine
Chapter 2 Java memory zone and memory overflow exceptions
Running data area
1. The Program Counter (Program Counter Register) is a small memory space, which can be seen as the row number indicator of the bytecode executed by the current thread.
2. the Java Virtual Machine Stack (Stack) thread is private. A Stack Frame is created for each method call to store information such as the local variable table, operand Stack, dynamic link, and method exit. Local variables store various basic data types (boolean, byte, char, short, int, float, long, double), object reference (reference type), and returnAddress known during the compilation period.
3. Native Method Stack (Native Method Stack): Stack provided for local methods of virtual machines
4. A memory area shared by all java Heap threads to store object instances. It may be divided into the new generation and the old generation. The details include Eden space, From other vor space, and To another vor space.
5. Each purebred shared memory Area in the Method Area is used to store data such as class information, constants, static variables, and Code Compiled by the real-time compiler. Permanent Generation)
6. The Runtime Constant Pool is part of the method area and is used to store various literal quantities and symbolic references generated during the compilation period, this part of content will be stored in the runtime pool of the method area after the class is loaded.
7. Direct Memory)
HotSpot virtual machine object discovery
Object Creation
1. Check whether the new parameter can be located in the constant pool.
2. Check whether the class represented by this symbolic reference has been loaded for parsing and initialization.
If the corresponding class loading process is not executed first.
3. allocate memory. The size of the memory required by the object can be determined after the class is loaded.
4. initialize the allocated memory space to a zero value. This step ensures that the instance field of the object can be directly used without the initial value in java code.
5. The virtual machine makes necessary settings on the object. How can we find the metadata information of the class, the hash code of the object, and the GC generation of the object? These information are stored in the object header.
6. Constructor
Object Memory layout: it can be divided into three areas: object Header, Instance Data, and Padding)
Object Access location:
Access an object through a handle
Direct pointer access to objects