美文网首页
什么是JVM 运行时常量池

什么是JVM 运行时常量池

作者: rainy618 | 来源:发表于2020-09-21 23:37 被阅读0次

一、方法区 - 运行时常量池

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

运行时常量池 vs 常量池

    - 方法区,内部包含了运行时常量池
    - 字节码文件,内部包含了常量池

​ 要弄清楚方法区,需要理解清楚ClassFile,因为加载内的信息都在方法区。

​ 要弄清楚方法区的运行时常量池,需要理解清楚ClassFile中的常量池。

image

为什么需要常量池?

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

什么是符号引用?什么是直接应用?

什么是动态链接?

  动态链接就是指向运行时常量池的方法引用,动态链接的作用就是为了将这些符号引用转换为调用方法的直接引用。

​ 在Java源文件被编译到的字节码文件中时,所有的变量和方法引用都作为符号引用保存在Class文件中的常量池里面。

符号引用 ----> 直接引用

栈帧

[图片上传失败...(image-b8ec8b-1600702650468)]

动态链接

image

1.1运行时常量池

  • 运行时常量池是方法区的一部分

  • 常量池表是Class文件的一部分,用于存放编译期生成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。

  • 运行时常量池,在加载类和接口道虚拟机后,就会创建对应的运行时常量池。

  • JVM为每个已加载的类型(类或接口)都维护一个常量池,池中的数据项像数组一样,通过索引访问的。

  • 运行时常量池中包含多种不同的常量,包括编译期就已经明确的数字字面量,也包括到运行时期解析后才能获得的方法或者字段应用,此时不再是常量池中的符号地址了。这里换为真实地址。

    运行时常量池,相对于Class文件常量池的另一重要特征是:具备动态性

  • 运行时常量池类似于传统编程语言中的符号表,但是它所包含的数据却比符号表要更加丰富一些。

  • 当创建类或接口的运行时常量池时,如果构造运行时常量池所需的内存空间超过了方法区所能提供的最大值,则会抛出OOM异常。

image

Javad 方法区究竟存了什么???

image

相关文章

  • JVM-常量池

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

  • 彻底弄懂java中的常量池

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

  • 深入浅出JVM常量池

    常量池在JVM中分为三种:字符串常量池,运行时常量池,Class常量池讨论范围 JDK 1.7版本及以后 字符串常...

  • java运行时常量池

    运行时常量池是方法区的一部分,每一个运行时常量池都分配在JVM方法区中,在类和接口被加载到JVM后(这里的加载指:...

  • 细说Java常量池

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

  • Java从入门到入坑(底层篇)

    01:JVM 1:JVM内存结构 class 文件格式、运行时数据区:堆、栈、方法区、直接内存、运行时常量池、 堆...

  • java面试jvm总结

    JVM→ JVM 内存结构运行时数据区:堆、栈、方法区、直接内存、运行时常量池、堆存放对象, 方法区他用于存储已被...

  • java基础类型、String类理解、版本对比、1.8新特性

    1、java基本数据类型及长度 2、jvm的常量池: JVM常量池浅析Java常量池理解与总结 Java中的常量池...

  • 什么是JVM 运行时常量池

    一、方法区 - 运行时常量池 常量池,可以看做是一张表,虚拟机指令根据这张常量表找到要执行的类名,方法名,参数类型...

  • java 常量池

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

网友评论

      本文标题:什么是JVM 运行时常量池

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