Search code examples
javamemoryjvmheap-memorystack-memory

Heap vs Stack vs Perm Space


  • What are the differences between the Java memory spaces (Perm Space, Space Stack, Heap Space)?
  • When does the JVM use one or another?
  • If I use Scala/Groovy/etc., are there differences?

Solution

  • Simply

    • Heap space: All live objects are allocated here.
    • Stack space: Stores references to the object for variable in method call or variable instantiation.
    • Perm space: Stores loaded classes information

    For example:

    Student std = new Student();
    

    after executing the line above memory status will be like this.

    • Heap: stores "new Student()"
    • Stack: stores information about "std"
    • Perm Space: stores information about Student class