美文网首页
类常量池和运行时常量池的区别

类常量池和运行时常量池的区别

作者: MakeACoder | 来源:发表于2017-12-22 15:17 被阅读0次

首先常量池分为类编译后的常量池和运行时常量池
类的常量池为类编译后生成的 Constant pool:
在代码运行时会将 上面 Constant pool 的内容加载到方法区(perm jdk1.8以后是metaspace)生成运行时常量池
运行时常量池。
关于String类型,如String a = "a" 在代码运行时会先初始化到 SymbolTable符号表中(在方法区) 运行这行代码时
将常量 a 拷贝到 堆中使用。

这里有两个问题
1、 多个类定义了 String a="a" 这个字符串 在SymbolTable中只占一个内存空间 (来自笨神)
2、 多个类调用 String a= "a" 这条语句 只生成一个对象(1.7以后在堆中)

例:

String a="a"
String b="a"
System.out.println(a==b)  //true

相关文章

  • 关于String和StringBuffer

    String 和 StringBuilder的区别 String类的学习(可以结合字符串常量池 常量池 运行时常量...

  • 类常量池和运行时常量池的区别

    首先常量池分为类编译后的常量池和运行时常量池类的常量池为类编译后生成的 Constant pool:在代码运行时会...

  • JVM-常量池

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

  • 彻底弄懂java中的常量池

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

  • java 常量池

    1. 什么是常量池 常量池可以分为两类:静态常量池和运行时常量池 静态常量池:通常是指在编译时期被确定,并被保存在...

  • Java中的常量池

    Java中的常量池分为三类:字符串常量池、class常量池、运行时常量池 字符串常量池 从1.7及其之后,字符串常...

  • 今天我们基于jdk8聊聊JVM-常量池,希望对大家有帮助!

    前言 本文主要讲 三种常量池, 类文件中常量池,运行时常量池,字符串常量池 各自存放的地方,以及对代码的影响 类...

  • 常量池

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

  • 细说Java常量池

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

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

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

网友评论

      本文标题:类常量池和运行时常量池的区别

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