java中 static变量和方法到底是存在内存什么区域

如题所述

JVM内存总体一共分为了
4个部分(stack segment、heap segment、code segment、data segment)
当我们在程序中,申明一个局部变量的时候,此变量就存放在了 stack segment(栈)当中;
当new 一个对象的时候,此对象放在了heap segment(堆)当中;
而static 的变量或者字符串常量 则存在在 data segment(数据区)中;
那么类中方法的话,是存在在 code segment(代码区)中了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-05-27
static变量存在的意义就是不需要实例化某个类就可以调用类的加载是由第一次调用该类的static变量触发的而不是相反(这里仅讨论static变量和类的加载),所以说如果你不调static变量那这个类就不会被加载,变量也不会存在,没load的东西根本谈不到内存占用。static修饰过多我认为理论上是存在内存占用的问题,但问题是static变量并不会随着你不断的创建新对象而增多,因为它在变量被正式创建之前就存在了,你一个系统才能有几个static变量啊,能建上哪怕超过一千个都很火星了。本回答被提问者采纳

java中 static变量和方法到底是存在内存什么区域
而static 的变量或者字符串常量 则存在在 data segment(数据区)中;那么类中方法的话,是存在在 code segment(代码区)中了。

java静态变量存储在哪个区
方法区:1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。二、内存分区 而内存分为四个区:stack segment,heap segment,data segment,code segment;stack 区存放函数参数和局部变量;heap 区...

java中static final变量存储内存哪个区?
存储在静态区的,他不能被改变是因为java存储特性决定的,java在存储数据时不只存储了数据,还存储了数据想关信息如:数据类型等,在初始化MAX的时候已经生命是final的,那么他将不能被改变

java中,静态方法被调用是,存储在内存的哪个区域?是栈?还是放大区?还是...
在JDK8之前,静态成员(静态变量和静态方法)都是存储在方法区(永久代)中的静态区中(这里指类被加载后,静态成员的存储位置)。但在JDK8之后,永久代被移除了,取而代之的是元空间(metaspace)。但元空间中存储的主要是.class文件的元数据信息,静态成员的存储位置由方法区转到了堆内存(heap)中。

在Java JVM里,如果一个变量被声明为final或者static, 那么这个变量的引 ...
static不能用在方法里面,只能修饰类的属性或者方法。static修饰的变量被放在方法区,因为它属于类变量,是类的一部分。所有的方法中的普通变量都是在栈中的局部变量表中的,如果是引用类型的变量局部变量表会存放引用对象的地址,这个引用对象实际存储在堆中。如果被final修饰的话代表这个引用类型的变量指向...

JAVA 中的关键字static
对于一个完整的程序,在内存中的分布情况如下图: 代码区 全局数据区 堆区 栈区 一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心...

JAVA编程中static的用途与用法
1.Static int data语句说明data为类变量,为一个类的共享变量,是所有对象共享的,它不 属于任何对象,是属于整个类的(静态方法也是一样)。2.Static定义的是一块为整个类共有的一块存储区域。3.其变量可以通过类名去访问:类名.变量名(与通过对象引用访问变量是等价的)。2)静态方法(修饰方法)...

java中静态变量和实例变量的生命周期有什么区别?
1.存储区域不同:静态变量存储在静态存储区,普通变量存储在堆中;\\x0d\\x0a2.静态变量与类相关,普通变量则与实例相关,说细一点:\\x0d\\x0aclass Demo {\\x0d\\x0apublic static String a;\\x0d\\x0apublic String b;\\x0d\\x0apublic static void main(String[] args) {\\x0d\\x0a ...

java中的全局变量和静态变量是在编译时分配内存还是在加载时分配内存...
静态变量存在于方法区中,成员变量存在于堆内存中,成员变量所属于对象JAVA成员变量和静态变量的区别,成员变量随着对象创建而存在。随着对象被回收而消失。静态变量随着类的加载而存在。静态变量是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是...

java中static作用详解
2. **内存分配**:静态成员在类被加载到JVM时就被分配内存,并且这份内存在整个程序运行期间都有效,直到类被卸载。这意味着静态成员在内存中只有一份拷贝,被所有实例共享。3. **访问限制**:静态方法不能直接访问类的非静态成员(变量和方法),因为非静态成员是依赖于特定实例的,而静态成员则不...

相似回答