导航:首页 > 编程语言 > java常量池大小

java常量池大小

发布时间:2024-09-25 22:26:53

java中基本数据类型int a =10,a在栈中存着,10是在常量池中存着吗

int a =10 如果是这个 那么10在栈里面
Interger a = 10 那么这个在常量池里面
a是在-128到127之间,不会去堆中创建对象,而回是直接返回IntegerCache中的值;如果值不答在上面范围内则会从堆中创建对象。= 走的是valueOf()方法,valueOf(int)会走缓存。
Interger a = new Interger(10) 这个在堆里面

㈡ 什么是JVM 运行时常量池

运行时常量池 vs 常量池

​ 要弄清楚方法区,需要理解清楚ClassFile,因为加载内的信息都在方法区。

​ 要弄清楚方法区的运行时常量池,需要理解清楚ClassFile中的常量池。

​ 一个Java源文件中的类、接口,编译后产生一个字节码文件。而Java中的字节码需要数据支持,通常这种数据会很大以至于不能直接存在字节码文件,换另一种方式,可以存在常量池,这个字节码包含了指向常量池的引用。在动态链接的时候会用到运行时常量池。

栈帧

[图片上传失败...(image-b8ec8b-1600702650468)]

动态链接

Javad 方法区究竟存了什么???

㈢ Java常量池是什么有什么用 和堆、栈有关系求简单易懂的解释!

1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
3. 堆:存放所有new出来的对象。
4. 静态域:存放静态成员(static定义的)
5. 常量池:存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:硬盘等永久存储空间
这里我们主要关心栈,堆和常量池,对于栈和常量池中的对象可以共享,对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定,具有很大的灵活性。
对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。

㈣ Java 面试宝典:你是如何理解常量池的

本文探讨常量池在Java技术中的应用,它在类加载与运行时起到关键作用。常量池分为Class文件常量池与运行时常量池。

Class文件常量池在源代码编译成字节码文件时生成,内含字面量与符号引用,支持Java编译器收集类中所有值与引用。字面量包括八种类型,如整数、浮点数、字符串等。符号引用则包括类全路径名、方法名称与描述符等。

运行时常量池位于方法区,用于存储类中的常量、静态变量和符号引用。与Class文件常量池不同,它是动态创建的,用于在程序运行时访问常量。Java编译期间生成的静态常量池与动态创建的运行时常量池相区别。

注意,在程序运行时,可以动态生成一些常量,如String的intern()方法。此方法用于将对象的引用添加至字符串常量池,确保相同字符串共享一个实例。字符串常量池在整个JVM中只存在一份,以减少内存消耗。关于字符串常量池的应用及内部运作,可参考相关文章。

Java中的封装类常量池(Byte、Short、Integer、Long、Character、Boolean)提供了类型安全与数值操作的便利性,每个封装类内部维护着常量池,而Float与Double并未实现该特性,可能是因为浮点精度问题的影响。

通过理解常量池在Java中扮演的角色,开发人员能更加有效地利用这些机制来提升程序性能与资源管理。关注Java技术的深入研究,对于系统开发与优化大有裨益。

㈤ java中 关于常量池 栈内存 堆内存

常量池在java用于保存在编译期已确定的,已编译的class文件中的一份数据。包内括了关于类,方容法,接口等中的常量,也包括字符串常量,如String s = "java"这种申明方式;当然也可扩充,执行器产生的常量也会放入常量池,故认为常量池是JVM的一块特殊的内存空间。
Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和
multianewarray等指令建立,不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事
先告诉编译器,因为是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。

阅读全文

与java常量池大小相关的资料

热点内容
如何找编程类的工作 浏览:286
jsp从mysql读取时间 浏览:680
有什么app可以存app 浏览:603
游戏编程从哪里学的 浏览:738
win8文件布局 浏览:308
数据存储参数配置文件 浏览:122
面膜去哪个网站买好 浏览:627
天下游旧版本 浏览:622
iphone6按键震动 浏览:528
u盘没有显示怎么打开文件夹 浏览:13
win7升级win10激活失败 浏览:914
win10系统文件缺失介质修复 浏览:900
怎么样系统升级 浏览:518
魔客吧传奇网站模板 浏览:365
一段代码解决html多浏览器兼容 浏览:803
淘车大师app官方下载 浏览:953
win10系统怎么能找回桌面文件 浏览:423
换主板怎么装驱动程序 浏览:563
宜搜小说旧版本 浏览:310
win10净网大师 浏览:262

友情链接