What are the differences between Heap and Stack Memory in Java?

The major difference between Heap and Stack memory are:

Features Stack Heap
Memory Stack memory is used only by one thread of execution. Heap memory is used by all the part of the application.
Memory Management Follow LIFO manner for free memory. Memory management is based on the generation associated with each object.
Lifetime Exist until the end of execution of the thread. Heap memory lives from the start till the end of application execution.
Access Stack memory can not be accessed by other thread. Object stored in heap are globally accessible.
Usage Stack memory only contains local primitive and reference variable to objects in heap space. Whenever an object is created its always stored in heap.