jdk1.6之前常量池属于永久代,jdk1.7以后移到堆中。

String s1 = "abc";// 放在常量池中String s2 = "abc";// 从常量池中查找String s3 = new String("abc");//new放在堆中String s4 = new String("abc");String s5 = s1.intern();String s6 = s3.intern();System.out.println(s1 == s2);System.out.println(s1 == s3);System.out.println(s1 == s5);System.out.println(s1 == s6);System.out.println(s3 == s4);System.out.println("==================");System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));System.out.println(s1.equals(s5));System.out.println(s3.equals(s4));

==:比较引用地址一样

equals:比较的是两个对象的内容是否一样

当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。

String.intern()方法获得在常量池中的字符串引用,如果常量池中没有则会将字符串加入,然后将该引用放入list持有
确保不会被回收,jdk报错permgem space发生在永久代 jdk7报错 java heap space发生在堆

List<String> list = new ArrayList<>();int i = 0;while (true) {list.add(String.valueOf(i++).intern());}

String和常量池相关推荐

  1. JavaDay16-P104-P142—二分法查找—String类—常量池—包装—装箱、拆箱—NumberFormatException

    1.二分法查找--建立在数组排序之上 案例程序: class BinarySearch{public static void binarySearch(int[] arr,int des) {Arra ...

  2. 百无聊赖之JavaEE从入门到放弃(十一)string类 常量池原理 内部类

    目录 一.String类和常量池 1.String基础知识 2.常量池 二.内部类 1.概念 2.内部类的作用 3.注意 4.非静态内部类 5.静态内部类 6.匿名内部类 7.局部内部类 一.Stri ...

  3. String 字符串常量池

    java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String实现了Seria ...

  4. JDK1.8+的String(字符串)常量池理解

    在工作中使用String的地方很多,但是有时候会产生一点疑问,那就是项目中用到了这么多String,会不会对内存造成一定的压力,会不会降低程序的性能,字符串的值都存放到哪里去了?所以就深入了解了一下. ...

  5. 3.内存分配、逃逸分析与栈上分配、直接内存和运行时常量池、基本类型的包装类和常量池、TLAB、可达性分析算法(学习笔记)

    3.JVM内存分配 3.1.内存分配概述 3.2.内存分配–Eden区域 3.3.内存分配–大对象直接进老年代 3.3.1.背景 3.3.2.解析 3.4.内存分配–长期存活的对象进去老年代 3.5. ...

  6. Error,java对常量池来说字符串xxx的UTF8表示过长

    客户端这里自己模拟json数据时,一时没忍住搞得json字符串太长了(idea上大概有600多行吧),这个问题就蹦出来了.老方法直接google.百度然后看到一堆有关String 字符串常量池字符最大 ...

  7. (全网最详细最有深度)超过1W字深度剖析JVM常量池

    字符串常量池存储在堆内存空间中,创建形式如下图所示. 当使用String a="Hello"这种方式创建字符串对象时,JVM首先会先检查该字符串对象是否存在与字符串常量池中,如果存 ...

  8. Java常量池的一点理解

    关于网上的一个面试题,求输出结果: /** * * @author DreamSea 2011-11-19 */ public class IntegerTest { public static vo ...

  9. 第四篇:由浅入深,虚拟机常量池底层解析

    文章目录 一.前言 二.常量池的引入:从常量到常量池 2.1 常量 2.2 Class文件中的常量池 2.3 方法区中的运行时常量池 2.4 常量池的好处 三.常量池的介绍:JVM三种常量池 3.1 ...

最新文章

  1. Java查询大文本文件的处理方法
  2. HDU 2084 数塔 DP
  3. 谁来护航储能电池安全?
  4. 第27章:MongoDB-索引--唯一索引
  5. SEC SOC Test Board 在WIN 7下的安装
  6. DM368 Uboot
  7. 一分钟教你用Excel从统计局抓数据!
  8. Python抓取单个网页中所有的PDF文档
  9. docker-compose的一些理解
  10. 检测分割算法改进(篇二) Residual Feature Augmentation(RFA模块)及Adaptive Spatial Fusion(ASF模块)
  11. jquery 表单验证插件
  12. LaTeX调整页眉宽度适应文本
  13. 关于java web开发中的很多小问题集锦
  14. Educational Codeforces Round 121 (Rated for Div. 2) unr场 A B C
  15. KEYSIGHT示波器 MSO-X 3024A 简单操作说明
  16. centos 中英文输入法切换
  17. IDEA自动导包设置
  18. 电子邮件怎么注册,电子邮件地址怎么写你知道吗?
  19. C语言 求众数 程序
  20. 第二篇:java调用公共数据接口:上海市车辆基本信息查询(java调用soap接口)

热门文章

  1. 和12岁小同志搞创客开发:手撕代码,做一款火焰报警器
  2. 【TensorFlow2.0】(1) tensor数据类型,类型转换
  3. Windows下配置Maven环境变量
  4. ROS Melodic安装、配置和使用turtlebot2(集成众多源代码直接下载)
  5. UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid start byte
  6. SpringBoot上传文件大小限制
  7. 忠告初学者学习Linux系统的8点建议
  8. UML中的六种关系的比较与学习
  9. 触控(Touch) 、 布局(Layout)
  10. 《需求分析与系统设计》读书笔记1