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 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?
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:
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.
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,
http://www.pointsoftware.ch/en/under-the-hood-runtime-data-areas-javas-memory-model/ gives a pretty good idea which I havent 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.