常量池

作者: _云起 | 来源:发表于2020-03-25 23:51 被阅读0次

对于常量池而言,字符串的概念较为广泛,并不单指字符串变量。类名、方法名、类型、this指针名,等等,都可以看作是字符串,最终都会被JVM当作字符串处理、存储到符号区。

由于无论是tag还是constantPool的数据区,一个存储位置只能存放一个指针宽度的数据,而字符串往往很大,因此JVM专门设计一个“符合表”的内存区,tag和constantPool数据区内仅保存指针指向符号区。

JVM对字符串的处理如下:

以上代码给出了一个基本思路,即字节码文件中的字符串常量池元素最终都会被保存到符号表中,为了节省内存,JVM会先判断符号表中是否存在相同的字符串,如果已经存在,则不会申请内存。这就是如果你在一个类中定义了两个字符串,但是这两个字符串的值相同,最终这两个字符串变量都会同时指向常量池中同一个位置的原因。

相关文章

  • 字符串常量池

    静态常量池,运行期常量池,字符串常量池 静态常量池 运行时常量池 字符串常量池 问题 结果: 验证new Stri...

  • java__常量池

    java的常量池分为两种型态:静态常量池和运行常量池 静态常量池: 即class文件中的常量池,这种常量池主要用于...

  • JVM-常量池

    JVM-常量池 JVM常量池分为 Class文件常量池 运行时常量池 全局字符串常量池 基本类型包装类对象常量池 ...

  • 细说Java常量池

      Java中的常量池有:class常量池、运行时常量池、String常量池。 为什么要使用常量池?   避免频繁...

  • Java 内存—常量池

    Java中的常量池分为两种型态: 静态常量池 运行时常量池 静态常量池 所谓静态常量池是指class文件中的常量池...

  • 你对常量池够了解吗

    在 java 中,常量池分为以下三种: class 常量池 字符串常量池 运行时常量池 一、class 常量池 1...

  • 彻底弄懂java中的常量池

    JVM有几种常量池 主要分为: Class文件常量池、运行时常量池,全局字符串常量池,以及基本类型包装类对象常量池...

  • 常量池

    Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。 静态常量池 : *.class文件中的常量池,...

  • JVM(六)JVM常量池

    1.常量池类型 Java中的常量池分为三种: 类文件常量池(静态常量池)(The Constant Pool)运行...

  • 【JAVA基础】常量池、字符串字面量、JAVA编译

    1.常量池的概念 分为两大类:静态常量池和运行时常量池。 class文件静态常量池即class文件中的常量池, 指...

网友评论

      本文标题:常量池

      本文链接:https://www.haomeiwen.com/subject/maezyhtx.html