Before talking about the heap and stack, let’s first talk about the division of JVM (virtual machine) memory: (Recommended learning: java course )
Java programs must allocate space when they are running. Any software must allocate space in the memory when they are running. The Java virtual machine also must allocate space when it is running.
The JVM opens up a memory area in the memory when it is running, and divides it more carefully in its own memory area when it starts. Because each piece of memory in the virtual machine is processed in a different way, it must be managed separately.
JVM memory is divided into five parts:
1. Register;
2. Local method area;
3. Method area;
4. Stack memory;
5. Heap memory.
Let’s focus on the heap and stack:
Stack memory: Stack memory is first a memory area, which stores local variables. , everything defined in the method is a local variable (things outside the method are global variables), and the variables defined inside the for loop are also local variables. The function must be loaded first before the local variable can be defined, so the method first stacks the stack and then defines the variables. Variables have their own scope and are released once they leave the scope.
The stack memory is updated very quickly because the life cycle of local variables is very short.
Heap memory: stores arrays and objects (in fact, arrays are objects). Everything created by new is in the heap, and entities (objects) are stored in the heap. Entities It is used to encapsulate data, and it encapsulates multiple (multiple attributes of an entity). If one data disappears, the entity does not disappear and can still be used, so the heap will not be released at any time, but the stack is different. are all single variables. Once the variables are released, they are gone.
Although the entities in the heap will not be released, they will be treated as garbage. Java has a garbage collection mechanism to collect them from time to time.
The difference between heap and stack:
1. Stack memory stores local variables while heap memory stores entities;
2. The update speed of stack memory is faster than that of heap memory, because the life cycle of local variables is very short;
3. Once the life cycle of variables stored in stack memory is It will be released when it is finished, and the entities stored in the heap memory will be recycled by the garbage collection mechanism from time to time.
The above is the detailed content of The difference between stack and heap in java. For more information, please follow other related articles on the PHP Chinese website!