Note that there are some explanatory texts on larger screens.

plurals
  1. POstatic allocation in java - heap, stack and permanent generation
    text
    copied!<p>I have been lately reading a lot on memory allocation schemes in java, and there have been many doubts as I have been reading from various sources. I have collected my concepts, and I would request to go through all of the points and comment on them. I came to know that memory allocation is JVM specific, so I must say beforehand, that my question is Sun specific.</p> <ol> <li>Classes (loaded by the classloaders) go in a special area on heap : Permanent Generation</li> <li>All the information related to a class like name of the class, Object arrays associated with the class, internal objects used by JVM (like java/lang/Object) and optimization information goes into the Permanent Generation area.</li> <li>All the static member variables are kept on the Permanent Generation area again.</li> <li>Objects go on a different heap : Young generation</li> <li>There is only one copy of each method per class, be the method static or non-static. That copy is put in the Permanent Generation area. For non-static methods, all the parameters and local variables go onto the stack - and whenever there is a concrete invocation of that method, we get a new stack-frame associated with it. I am not sure where are the local variables of a static method are stored. Are they on the heap of Permanent Generation ? Or just their reference is stored in the Permanent Generation area, and the actual copy is somewhere else (Where ?)</li> <li>I am also unsure where does the return type of a method get stored.</li> <li>If the objects (in the young generation) needs to use a static member (in the permanent generation), they are given a reference to the static member &amp;&amp; they are given enough memory space to store the return type of the method,etc.</li> </ol> <p>Thank you for going through this !</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload