美文网首页
JVM学习5·常量池(方法区)

JVM学习5·常量池(方法区)

作者: 那钱有着落吗 | 来源:发表于2022-01-19 09:59 被阅读0次

1.Class常量池

Class常量池主要分为两个:

  • 字面量
  • 符号引用

下图中就是反编译之后的代码,我们可以观察到反编译之后可以看到有很多类的相关信息版本 名称 最后修改时间之类的,还有各种方法接口字段等信息,然后还有个重要的就是常量池了


上图中就是字面量以及符号引用的解释:

字面量就是“值”,就好比一个字符串a=“b” 那么b就是字面量

符号引用就好比我们正常写的方法的引用一个类,到了内存中,必须得替换为真是的内存地址也就是直接引用,不然写一个代码的引用也不知道到底引用到真实内存的哪一个对象。

2.运行时常量池

jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在方法区中,我们常说的常量池,就是指方法区中的运行时常量池。

运行时常量池也会存放从符号引用转换而来的直接引用,要注意的是在JDK1.7之后实现是在堆中实现的

3.字符串常量池

由于String使用的频率非常高,所以String常量池说白了就是hotspot为了高效的处理String字符串专门划分的区域
要说字符串常量池,那就首先讲一下String这个基本数据类型吧:


从图中可以看到String这个类是被final修饰的,也就意味着这个类是不可变的,然后最重要的实现是下面的两个字段,一个是char数组一个是hash值,所以String有几个特点:
*1.安全
*2.Hash唯一
*3.用于字符串常量池

关于字符串,是比较基础的,在一般的面试中也是比较基础的题,所以相关详细的可以在网上查一下,有大量的资料去讲这个。

相关文章

  • JVM学习5·常量池(方法区)

    1.Class常量池 Class常量池主要分为两个: 字面量 符号引用 下图中就是反编译之后的代码,我们可以观察到...

  • JVM 详解 待续ing

    JVM内存区域 方法区常量池堆区栈区本地方法区程序计数器 JVM调优 类声明周期

  • 方法区和永久代是、元数据空间是啥关系

    一:刚开始学习JVM的时候,看的是深入理解JVM那本书,里面讲JVM里存在方法区,方法区里面还有运行时常量池。然后...

  • java面试jvm总结

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

  • java运行时常量池

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

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

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

  • JVM内存划分

    不同版本JVM内存划分的变化 1.6,使用永久代(PermGen)来实现方法区,运行时常量池在方法区中。1.7,还...

  • JVM-常量池

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

  • JVM(六)内存与圾回收|本地方法接口+字符串常量池

      本文介绍JVM的本地方法接口和字符串常量池。  字符串常量池在前文内存与垃圾回收|运行时数据区(下)中也有提到...

  • 类的生命周期

    其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。tip:jvm分为堆、栈、方法区,常量池存在于方法区...

网友评论

      本文标题:JVM学习5·常量池(方法区)

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