Deepak
Deepak

Reputation: 167

Where java static variables are stored in memory?

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

Answers (3)

marcelv3612
marcelv3612

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

user2873260
user2873260

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

AnthonyJClink
AnthonyJClink

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

Related Questions