| Features | Stack | Heap |
|---|---|---|
| Memory | Stack memory is used only by one thread of execution. | Heap memory is used by all the parts of the application. |
| Access | Stack memory can’t be accessed by other threads. | Objects stored in the heap are globally accessible. |
| Memory Management | Follows LIFO manner to free memory. | Memory management is based on generation associated to each object. |
| Lifetime | Exists until the end of execution of the thread. | Heap memory lives from the start till the end of application execution. |
| Usage | Stack memory only contains local primitive and reference variables to objects in heap space. | Whenever an object is created, it’s always stored in the Heap space. |