There is a last-in-first-out (Last In First Out) sequential data structure like a stack in Java. This is java.util.Stack. In this case, it will inevitably make many people more confused about the previous question. In fact, the heap and stack are both parts of memory and have different functions, and a program needs to allocate memory in this area. As we all know, all Java programs run inside the JVM virtual machine. What we are introducing here is naturally the heap and stack in the JVM (virtual) memory.
Difference
The difference between heap and stack in Java is naturally a common question in interviews. The following points are the specific differences:
Perform their own duties
The main difference is that stack memory is used to store local variables and method calls.
The heap memory is used to store objects in Java. Whether it is member variables, local variables, or class variables, the objects they point to are stored in heap memory.
Unique or shared
Stack memory belongs to a single thread. Each thread will have a stack memory, and the variables it stores can only be visible in the thread to which it belongs. , that is, the stack memory can be understood as the private memory of the thread.
The objects in the heap memory are visible to all threads. Objects in heap memory can be accessed by all threads.
Exception Error
If there is no available space in stack memory to store method calls and local variables, the JVM will throw java.lang.StackOverFlowError.
If there is no available space in the heap memory to store the generated object, the JVM will throw java.lang.OutOfMemoryError.
Space size
The stack memory is much smaller than the heap memory. If you use recursion, your stack will fill up quickly. If the recursion does not break out in time, a StackOverFlowError problem is likely to occur.
You can set the stack memory size through the -Xss option. The -Xms option sets the starting size of the heap, and the -Xmx option sets the maximum heap size.
This is the difference between heap and stack in Java. If you understand this problem well, it can help you solve development problems, analyze heap memory and stack memory usage, and even perform performance tuning.
php Chinese website, a large number of free Java introductory tutorials, welcome to learn online!
The above is the detailed content of What are the differences between java heap and stack. For more information, please follow other related articles on the PHP Chinese website!