您的位置:首页 > Web前端

Difference between Stack and Heap in Java

2014-12-02 16:06 531 查看
Here are few differences between stack and heap memory in Java:

1) Main difference between heap and stack is that stack memory is used to store local
variables and function call
, while heap
memory is used to store objects in Java
. No matter, where object is created in code e.g. as member variable, local variable or class variable, they are always created inside heap space in Java.

2) Each Thread in Java has there own stack which can be specified using -Xss JVM
parameter, similarly you can also specify heap size of Java program using JVM option -Xms and -Xmx where -Xms is
starting size of heap and -Xmx is maximum size of java heap. to learn
more about JVM options see my post 10 JVM option Java programmer should know.

3) If there is no memory left in stack for storing function call or local variable, JVM will throw java.lang.StackOverFlowError, while
if there is no more heap space for creating object, JVM will throw java.lang.OutOfMemoryError: Java Heap Space. Read
more about how to deal with java.lang.OutOfMemoryError in my post 2
ways to solve OutOfMemoryError in Java.

4) If you are using Recursion, on which method calls itself,
You can quickly fill up stack memory. Another difference between stack and heap is that size of stack memory is lot lesser than size of heap memory in Java.

5) Variables stored in stacks are only visible to the owner Thread, while objects created in heap are visible to all thread. In other words stack memory is kind of private memory of Java Threads, while heap memory
is shared among all threads.

That's all on difference between Stack and Heap memory in Java. As I said, It’s important to understand what is heap and what is stack in Java and which kind of variables goes where, how you can
run out of stack and heap memory in Java etc. Let us know if you are familiar with any other difference between stack and heap memory in java.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: