Heap vs Stack vs Perm Space

caarlos0 picture caarlos0 · Jul 23, 2011 · Viewed 23k times · Source
  • 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?

Answer

Kowser picture Kowser · Jul 23, 2011

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