「java变量存储位置」java变量存放在哪个存储区
本篇文章给大家谈谈java变量存储位置,以及java变量存放在哪个存储区对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java中成员变量分配在哪个空间?
- 2、java中,静态变量存储在哪个区啊,堆还是栈啊,或者说其他地方,谢谢
- 3、java里的静态成员变量是放在了堆内存还是栈内
- 4、java中成员变量放在哪?
- 5、java中成员变量都储存在栈内存中吗?
- 6、java的成员变量是存在于哪里?如果是堆中该如何回收呢,能用system.gc吗
Java中成员变量分配在哪个空间?
变量分为成员变量和局部变量;
成员变量又分为实例变量和静态变量;
实例变量在对象创建的时候分配内存空间,存储在堆内存中;
静态变量在类加载的时候分配内存空间,存储在元空间;
局部变量在方法执行时分配内存空间,存储在栈内存中。
java中,静态变量存储在哪个区啊,堆还是栈啊,或者说其他地方,谢谢
首先,java里面是没有静态变量这个概念的,不信你自己在方法里面定义一个static
int
i
=0;java里只有静态成员变量。它属于类的属性。至于他放在那里?楼上说的是静态区。我不知道到底有没有这个翻译。但是
深入jvm里是是翻译为方法区的。虚拟机的体系结构:堆,方法区,本地方法栈,pc寄存器。而方法区保存的就是一个类的模板,堆是放类的实例的。栈是一般来用来函数计算的。随便找本计算机底层的书都知道了。栈里的数据,函数执行完就不会存储了。这就是为什么局部变量每一次都是一样的。就算给他加一后,下次执行函数的时候还是原来的样子。
java里的静态成员变量是放在了堆内存还是栈内
这个要看对象是否为逃逸对象,如果为非逃逸对象,会根据标量替换来把对象分解成若干个被这个方法使用的成员变量所代替,这些代替的成员变量在栈帧或寄存器上分配空间
java中成员变量放在哪?
在类体的变量部分中定义的变量,也称为字段
Clothes类的成员变量:
package ch05.sample;
public class Clothes
{
String id; //实例变量
private String colorType; //实例变量
private int size; //实例变量
private static String depart; //类变量
final String design="yangzi"; //常量
}
例如定义一个类:
class Text
{
public static int number;
public int temp;
}
如果你想访问temp属性,你就必须先创建一个Text的对象,才能访问:Text b = new Text();
b.temp;这就是实例成员变量。
而你想 访问number的话,不用创建Text的实例就可以访问,就像这样:Text.number.这就是类成员变量。
主要区别就是访问是需不需要创建对象,而对于类成员变量,所有对象是共享一个变量的。
java中成员变量都储存在栈内存中吗?
一个完整的Java程序运行过程会涉及以下内存区域:
寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。
栈:保存局部变量的值,包括:1.用来保存基本数据类型的值;2.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧。
堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。
常量池:JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型,String)和对其他类型、方法、字段的符号引用。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存在于堆中。
代码段:用来存放从硬盘上读取的源程序代码。
数据段:用来存放static定义的静态成员。
对于局部变量,如果是基本类型,会把值直接存储在栈;如果是引用类型,比如String s = new String("william");会把其对象存储在堆,而把这个对象的引用(指针)存储在栈。
再如
String s1 = new String(“william”);
String s2 = s1;
s1和s2同为这个字符串对象的实例,但是对象只有一个,存储在堆,而这两个引用存储在栈中。
类的成员变量在不同对象中各不相同,都有自己的存储空间(成员变量在堆中的对象中),基本类型和引用类型的成员变量都在这个对象的空间中,作为一个整体存储在堆。而类的方法却是该类的所有对象共享的,只有一套,对象使用方法的时候方法才被压入栈,方法不使用则不占用内存。
java的成员变量是存在于哪里?如果是堆中该如何回收呢,能用system.gc吗
Java成员变量存储在堆中:创建出来的对象只包含属于各自的成员变量,并不包含成员方法。同一个类对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是创建一个对象就把成员变量复制一次。
当一个对象(包括对象中的成员变量)没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块,可以使用system.gc
关于java变量存储位置和java变量存放在哪个存储区的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-24,除非注明,否则均为
原创文章,转载请注明出处。