当前位置:首页 > 科技 > 正文

常量池在jvm的哪个部分(常量池在堆还是方法区)

常量池在jvm的哪个部分(常量池在堆还是方法区)

大家好,常量池在堆还是方法区相信很多的网友都不是很明白,包括常量池在jvm的哪个部分也是一样,不过没有关系,接下来就来为大家分享关于常量池在堆还是方法区和常量池在jvm...

大家好,常量池在堆还是方法区相信很多的网友都不是很明白,包括常量池在jvm的哪个部分也是一样,不过没有关系,接下来就来为大家分享关于常量池在堆还是方法区和常量池在jvm的哪个部分的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

java中的String常量是存放在栈中还是堆中?

1、常量池存在于堆中。\x0d\x0a代码段:用来存放从硬盘上读取的源程序代码。\x0d\x0a数据段:用来存放static定义的静态成员。

2、再将栈中的引用指向该字符串。常量字符串的“+”操作,编译阶段直接会合成为一个字符串。

3、出于追求速度的原因,就存在于栈中。另一种是包装类数据,如Integer, String, Double等将相应的基本数据类型包装起来的类。

4、str的存放位置不一定在栈中,这要看str的声明位置,如果str是方法参数中 声明或方法内局部变量声明则存放位置就是你说的在栈中,但如果在类的成 员变量中声明则是存放于堆中。

5、这样声明的是基础变量,是放在栈区的,如果是Stringstr=newString(abc),这个就是对象形势的,就是放在堆区了。

Java中,实例中的常量是在堆中还是方法区

1、静态变量、常量在方法区,所有方法,包括静态和非静态的,也在方法区。堆储存对象、数组、非静态变量。

2、Java6和6之前,常量池是存放在方法区(永久代)中的。Java7,将常量池是存放到了堆中。Java8之后,取消了整个永久代区域,取而代之的是元空间。

3、第一种,static的,作为类信息在类被加载时被存在静态的方法区。第二种,非static的,作为对象属性,在对象创建的时候被初始化,存在堆里。第三种,在方法里的。

常量池在jvm的哪个空间里边

方法区 常量池(constant_pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量和符号引用。

java常量池不在堆中也不在栈中,是独立的内存空间管理。 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。

JDK8及以后,方法区又从堆内存中剥离出来了,但实现方式与之前的永久代不同,这时的方法区被叫做元空间,常量池就存储在元空间。

好了,文章到这里就结束啦,如果本次分享的常量池在堆还是方法区和常量池在jvm的哪个部分问题对您有所帮助,还望关注下本站哦!

最新文章