文章目录
1. 导读
2. JVM内存模型的简介
3. String::intern
4. String::intern的利弊
1. 导读
这期主要分享下String的常量池以及intern方法的使用;
2. JVM内存模型的简介
在介绍String的常量池之前, 先插播下JVM的内存模型, 以便能更好地理解后面的内容;
JVM内存模型
这是一张经典的JVM运行时内存管理图(基于JAVA SE 8), 而我们经常用的HotSpot虚拟机则使用永久代(Permanent Generation)来实现方法区;
本期需要关注的是方法区中运行时常量池, JAVA堆和Java虚拟机栈;
.1 运行时常量池: 他存储两部分数据: 第一部分是class文件中描述的符号引用以及编译产生的常量和直接引用数据; 第二部分是运行时产生的新的常量也会存储在这里,String::intern就是运用了这一特性去拿String常量池的数据的;
.2 Java堆: 简单来说我们每个new出来的对象都会存储在这个区域;
.3 Java虚拟机栈: 这部分存储是方