字符串常量池(String Constant Pool)深入解析

字符串常量池(String Constant Pool) 1:概述 字符串的分配和其他对象分配一样,是需要消耗高昂的时间和空间的,JVM为了提高性能和减少内存的开销,在实例化字符串的时候进行了一些优化: 使用字符串常量池:每当我们创建字符串常量池时,JVM会首先检查字符串常量池,如果该字符串已经存在常量池中,那么久直接返回常量池中的实例引用,如果字符串不存在常量池中,就会实例化该字符串并且放到常量池中 由于String字符串的不可变性我们可以十分肯定常量池中一定不存在两个相同的字符串 2:分类 1:静态常量池 即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。 2:运行时常量池(Runtime Constant Pool) 1:是方法区的一部分,Class文件中除了有类的版本.字段.方法.接口等描述信息外,还有一项重要的数据就是常量池, 用于存放编译器生成的各种字面量和符 引用,这部分内容将在类加载后进入方法区的运行时常量池存放 2;intern()方法 当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年9月27日
下一篇 2017年9月27日

相关推荐