Method Area and PermGen

18,831

Solution 1

You should take a look at Java Memory Types and optionally at this doc about the Garbage Collection in Java. The latter is very verbose and both are useful.

Actually the Method area is a part of the Permanent Generation:

A third generation closely related to the tenured generation is the permanent generation. The permanent generation is special because it holds data needed by the virtual machine to describe objects that do not have an equivalence at the Java language level. For example objects describing classes and methods are stored in the permanent generation.

Solution 2

You could consider the "Method Area" a subset of "PermGen", as the permanent generation space does hold class defintions, but it also holds interned Strings and other bits of data unlikely to ever be discarded,

Solution 3

Method Area is basically a non heap space like Stack which keeps class skeleton. skeleton includes static variables with values, constructors etc. The reflection operation are operated on this memory area. Perm is a memory space parallel to heap with keeps the binary code of current executing class.

Solution 4

gives a pretty good idea which I haven't found elsewhere

Most people talk about Heap and Stack as equivalents, and as the main components, but Tai gives a picture-perfect explanation with superb images.

Edit: Link no longer works :(

Share:
18,831
Admin
Author by

Admin

Updated on June 24, 2022

Comments

  • Admin
    Admin almost 2 years

    I was trying to understand the memory structure of HotSpot JVM and got confused with the two terms "Method Area" and "PermGen" space. The docs I referred to say that Method Area contains the definition of classes and methods including the byte code. Some other docs say that they are stored in the PermGen space.

    So can I conclude that these two memory areas are same?

  • falsarella
    falsarella over 12 years
    But it's not only PermGen subset, there can be a Method Area outside of PermGen space, right?
  • Ernest Friedman-Hill
    Ernest Friedman-Hill over 12 years
    No, my understanding is that all that sort of data goes in PermGen.
  • Govinnage  Rasika Perera
    Govinnage Rasika Perera over 9 years
    Update: Interned strings are stored in main heap from Java 7 onwards. oracle.com/technetwork/java/javase/…
  • Ramesh Papaganti
    Ramesh Papaganti over 6 years
    Update : From java8 on words there is no PermGen, And all class, method, string interns stored in Metaspace. Link : karunsubramanian.com/websphere/…