1.全局字符串常量池(string pool也有叫做string literal pool)全局字符串池里的内容是在类加载完成,经过验证,准备阶段之后在堆中生成字符串对象实例,然后将该字符串对象实例的引用值存到string pool中(记住:string pool中存的是引用值而不是具体的实例对象,具体的实例对象是在堆中开辟的一块空间存放的。)。 在HotSpot VM里实现的string poo            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-17 20:15:48
                            
                                244阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Java的常量池有字符串常量池、Class常量池和运行时常量池等,一想到这么多的常量池头都大了,今天就来梳理一下这些常量池的区别。一、运行时常量池运行时常量池是方法区的一部分,即JDK1.8中的元空间。JVM将类加载到内存中后,会将Class常量池中的内容存放到运行时常量池中。二、Class文件常量池Clas文件中除了有类的版本、字段等描述信息外,还有常量池表(Constant Pool Tabl            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-21 19:48:44
                            
                                33阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
                常量池(constant_pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量和符号引用。运行时常量池是方法区的一部分。      在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-17 12:28:19
                            
                                77阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在Java中的常量池,分为两种形态:静态常量池和运行时常量池静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。这种常量池主要用于存放两大类常量:字面量(Literal)和符号引用量(Symbolic References),字面量相当于Java语言层面常量的概念,如文本字符串,声明为final的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-20 20:29:16
                            
                                105阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一.相关概念什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。Class文件中的常量池                              &n            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-26 22:21:51
                            
                                32阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            【1】Integer的小坑先看个示例:  public static void main(String[] args) {        Integer a = 10;        Integer b = 10;             
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-06-11 00:03:52
                            
                                144阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            面试官Q1:请问什么是字符串常量池?Java设计者为String提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么,我们需要带着以下三个问题,去理解字符串常量池:字符串常量池的设计意图是什么?字符串常量池在哪里?如何操作字符串常量池?字符串常量池的设计意图是什么?字符串的分配,和其他的对象分配一样,耗费高昂的时间与空间代价。JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-01-11 19:31:46
                            
                                452阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            如何创建一个字符串,在Java中有两种方法可以创建一个字符串对象:使用new运算符。例如:String str = new String("Hello");使用字符串常量或者常量表达式。例如:String str="Hello"; //(字符串常量) 或...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-08 12:35:30
                            
                                81阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Java常量池是什么
## 1. 概述
Java常量池是Java虚拟机中的一块特殊内存区域,用于存储在编译期被确定并被保存在已编译的.class文件中的各种常量。它包括了字面量和符号引用两种类型的常量。
## 2. 常量池的流程
下面是Java常量池的流程,可以用表格来展示每个步骤:
| 步骤 | 描述 |
| ---- | ---- |
| 步骤1 | 定义并编写Java代码 |
|            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-08-07 15:13:23
                            
                                62阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、Java 虚拟机内存原型寄存器:我们在程序中无法控制。 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在 堆中。堆:存放用 new 产生的数据。 静态域:存放在对象中用 static 定义的静态成员。 常量池:存放常量。非 RAM 存储:硬盘等永久存储空间。&nb            
                
         
            
            
            
            对于Java中的常量池,一直有点困惑,看完网上的一些相关博客后,也似懂非懂,于是自己总结一下。关于常量池带着以下几个问题来逐步解答。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-05-22 22:21:56
                            
                                117阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1、基础类型有byte short int long char boolean float double八种。
  其中byte short int long char 的包装类型是存放在常量池(用来维护该类型所用到常量的有序集合)中的,浮点类型未实现常量池。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-05-22 22:20:12
                            
                                144阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、java运行时数据区  也可以称为java内存区域,这是一种规范,具体实现和使用哪种虚拟机有关。运行时数据区和java内存模型不是一回事,不要弄混。  官方文档地址:https://docs.oracle.com/javase/specs/jvms/se8/html/index.html 1.1、方法区  线程共享,类装载过程中产生的java.lang.Class对象保存在方法区,而            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-10 13:35:48
                            
                                70阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            理论1、jvm虚拟内存分布程序计数器是jvm执行程序的流水线,存放一些跳转指令。本地方法栈是jvm调用操作系统方法所使用的栈。虚拟机栈是jvm执行java代码所使用的栈。方法区存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。虚拟机堆是jvm执行java代码所使用的堆。2、常量池Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。所谓静态常量池,即*.c            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-07 11:34:20
                            
                                64阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            相信很多在学java技术的同学,对java常量这个并不陌生,什么是java常量呢?java常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-26 11:19:34
                            
                                176阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            常量池是java开发过程中经常使用到的,但java中有几种类型的常量池,而且这些常量池分别是用来做什么工作的,对jvm的性能有什么影响,这些就是笔者接下来要记录的。 目录一、什么是常量池?它是用来干什么的?二、java中有几种类型的常量池?三、字符串的两种创建方式有什么区别?四、字符串的intern()方法五、常量池对jvm的性能有哪些影响? 一、什么是常量池?它是用来干什么的?一般来说我们所说的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-30 09:36:12
                            
                                110阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一.相关概念什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。Class文件中的常量池在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,再接着是用于存放常量的常量池            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-18 21:32:51
                            
                                98阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # Java常量池存在的区域
## 概述
在Java中,常量池是存储常量的一种数据结构,用于存储字符串常量、基本数据类型常量等。常量池分为两种区域:方法区常量池和运行时常量池。方法区常量池存储类信息、字段信息、方法信息等,而运行时常量池则是方法区常量池的一部分,在虚拟机启动时被创建并存放在堆内存中。
## 流程
为了帮助你理解Java常量池存在的区域,我整理了以下步骤表格,并为每个步骤提供了需            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-07-14 05:32:28
                            
                                8阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Java常量池放了些什么
在Java中,常量池是一种存放常量的区域,用来保存字符串、基本数据类型、类名等。常量池分为两种:静态常量池和运行时常量池。静态常量池属于类加载过程中的内存区域,存放在class文件中,而运行时常量池则是属于方法区的一部分,存放在JVM的内存中。
## 静态常量池
静态常量池是存放在class文件中的,其中包含了类中的常量数据。这些数据在编译时就已经确定,因此在运            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-04-17 05:43:26
                            
                                10阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在class文件中,“常量池”是最复杂也最值得关注的内容。   Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值还,还包含一些以文本形式出现的符号引用,比如:   类和接口的全限定名;   字段的名称和描述符;   方法和名称和描述符。   在C语言中,如果一个程序要调用其它库中的函数            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-14 20:49:25
                            
                                23阅读