zoukankan      html  css  js  c++  java
  • 面试题:class常量池和运行时常量池的区别

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

    class常量池

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

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

    运行时常量池

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

  • 相关阅读:
    Java_适配器模式
    linux常用命令整理
    (转)使用隐藏的iframe 隐藏form提交,仿AJax无刷新提交,可以实现无刷新上传文件
    mysql添加并返回主键
    学习RMI
    关于bcprov-jdk16
    JavaScript在页面中的引用方法
    通过CFX发布WebService(一)
    字符串和json数据的转换
    MD5 加密与解密
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14293906.html
Copyright © 2011-2022 走看看