• 面试题:class常量池和运行时常量池的区别


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

    class常量池

    一个java源文件的类,接口,编译后会产生一个字节码文件。而Java中的字节码需要数据支持,通常这种数据会很大以至于不能直接存到字节码里,换一种方式,可以存到常量池中,这个字节码包含了指向常量池的引用。在动态链接的时候会用到运行时常量池。可以包括:数量值,字符串值,类引用,字段引用,方法引用。

    总结:常量池可以看作是一张表,虚拟机指令根据这张常量表找到要执行的类名,方法名,参数类型,字面量等类型。

    运行时常量池

    运行时常量池是方法区一部分,在加载类和接口到虚拟机后,就会创建对应的运行时常量池,会将常量池的部分内容存放到运行时常量池中。在创建的过程中,如果构建所需的空间超过方法区所能提供的最大值,就会报OOM。运行时常量池中包含了多种不同的常量,包括编译期的数值字面量,也包括到运行期解析后才能获取的方法或者字段引用,此时已经是真实地址,它具有动态性。

  • 相关阅读:
    JSP使用JDBC ODBC 实例
    Gradle templates 的使用
    Java 中使用Jackson反序列化
    Java getResourceAsStream返回为空的问题
    MVC 学习随笔(一)
    分区信息查看
    关于线程 wait notify sleep
    synchronized与Lock
    java类初始化
    oracle sql 执行原理
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14293906.html
Copyright © 2020-2023  润新知