Reputation: 167
class A{
static int i = 10;
static int j = 20;
static void getname(){
}
}
Where will these variable be stored in memory ?
Upvotes: 14
Views: 27551
Reputation: 663
First, static member variables are stored in the Permanent Generation area of heap.
Your example contains primitive type variables, they will be stored in the PermGen.
If those were object type variables, e.g. static Object x = new Object();
, then the reference x
would be stored in PermGen whereas the Object
itself would be placed in Young Generation of the heap.
Upvotes: 7
Reputation:
simply said , Static Variables are stored in HEAP. Classes and all of the data applying to classes (not instance data) is stored in the Permanent Generation section of the heap.
If you need elaborated answer , refer this
static allocation in java - heap, stack and permanent generation
Upvotes: 16
Reputation: 1008
I think for most implementations of some JVMS its particular to the PERM-GEM... but I have no proof.. the truth of the matter is... its up to the JVM where these values are stored. It is a variable... it could be stored in many different fashions depending on the JVM implementation.
If you are seeing memory problems, I would probably look at whats being assigned and not how its being assigned.
If you need more info, or your question is more implementation specific; lets rephrase your question and I will repost a better answer.
Upvotes: 0