Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >你对常量池够了解吗

你对常量池够了解吗

作者头像
贪挽懒月
发布于 2021-11-29 03:02:00
发布于 2021-11-29 03:02:00
30700
代码可运行
举报
文章被收录于专栏:JavaEEJavaEE
运行总次数:0
代码可运行

在 java 中,常量池分为以下三种:

  • class 常量池
  • 字符串常量池
  • 运行时常量池

一、class 常量池

1. 是什么?

是class文件中的资源仓库。我们的 class 文件,用十六进制编辑器( notepad++ 安装 Hex-editor )打开,可以发现它第二行的内容是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cafe babe 0000 0033 0010 0a00 0300 0d07……

每个 class 文件用十六进制编辑器打开,开头都是 cafe babe,这个叫魔数。那么剩下的是什么意思呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cafe babe       0000      0033       0010             0a00 0300 0d07……
   魔数       次版本号   主版本号   常量池计数器          常量池数据区……

看到没,这里就有常量池。啊这,我说它是就是,我说就一定对吗?我们可以使用如下命令,查看字节码文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
javap -verbose Test.class

执行之后会看到:

class常量池

看吧,我是不会骗你的!

2. 位置:

既然说了是 class 常量池,那它就是在 class 文件中。

3. 保存的数据:

class 常量池保存的东西主要有以下两类:

  • 字面量:简单地理解为等号右边的值,比如类中定义了int a = 1; String str = "hello",那么 1 和 hello 都是字面量。
  • 符号引用:类和接口的全限定名、字段的名称和描述符、方法的名称和描述符,这些就叫符号引用。

二、字符串常量池

1. 是什么?

顾名思义,就是用来保存字符串的常量池。为了提高执行效率、节省内存开销,从而整了个字符串常量池来缓存字符串数据。关于 String 的详细介绍,请参考我另一篇文章 String类相关面试题很难?不要方,问题不大

2. 位置:

  • jdk 1.7 之前,字符串常量池在方法区
  • jdk 1.7 及之后,字符串常量池在堆内存中

三、运行时常量池

1. 是什么?

当 class 文件通过 ClassLoader 加载到 JVM 内存时,会把 class 常量池 中的内容加载到方法区的一块内存中,这块内存就叫运行时常量池。

2. 位置:

运行时常量池在方法区中,jdk 1.7 极其之前方法区的实现叫永久代,jdk 1.8 开始叫元空间。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
小程序工具初探
微信开发者·代码管理是为开发者提供的一项代码管理服务,方便微信开发者进行代码推送、拉取、版本管理和多人协作。
云深无际
2020/08/26
1.4K0
小程序工具初探
微信小程序基础学习
张小龙:小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。
张世强
2020/04/03
1.1K0
微信小程序基础学习
【愚公系列】《微信小程序与云开发从入门到实践》004-小程序版的HelloWorld 程序
在学习任何新技术时,最经典的入门方式莫过于编写一个“Hello World”程序。它不仅能够帮助我们快速了解语言的基本语法和开发环境的配置,还能让我们在实践中体会到编程的乐趣。对于微信小程序来说,制作一个小程序版的“Hello World”不仅是入门的第一步,更是开启探索这一强大平台的旅程。
愚公搬代码
2025/01/08
1970
云开发与微信小程序上手
早前一段时间,由于兴趣爱好,白同学一直focus在容器、kubernetes 等云原生方面的工作。
白鹏飞
2021/03/18
1.1K0
云开发与微信小程序上手
小程序开发工具全新上线
本文介绍了微信开发者工具全新上线的小程序开发工具,包括新增的测试系统、腾讯云工具、运维性能监控、小程序分阶段发布、WXS脚本语言等功能。同时,文章还介绍了如何下载并安装微信开发者工具,以及如何使用小程序管理后台的功能。
腾讯云开发者社区
2017/08/31
2.8K0
小程序开发工具全新上线
微信官方出品!这款小程序,每个开发者都用得上 | MINA 奖 #15
一转眼,知晓程序 · MINA 奖已经进行到了第 15 期。回顾往期我们评奖的小程序,大多面向的是普通用户,如「查地铁」、「小小房贷计算器」。这些优秀的小程序,帮助了千千万万的用户,解决了生活中大大小小的问题。
知晓君
2018/08/01
4290
微信官方出品!这款小程序,每个开发者都用得上 | MINA 奖 #15
在得物的小程序生态实践
微信小程序(下文简称:小程序)作为一种在微信平台内运行的应用程序,用户无需前往应用商店下载安装包即可使用,可以在微信内被便捷地获取和传播,2017年一经推出便迅速成为热门技术关键词,得物也随即发布了得物App小程序,欢迎扫码体验:
得物技术
2024/06/18
1810
在得物的小程序生态实践
QQ小程序开发与发布小教程
QQ小程序QQApp,和微信小程序类似,可以直接在手机QQ中直接打开,应用内应用,省去了安装手机APP,非常方便。官方的介绍:QQ小程序为QQ体系下的应用开放平台,可为不同类型的产品提供框架,并在QQ内运行。QQ小程序作为连接年轻用户的新方式,覆盖8亿新生代活跃网民。轻便快捷的开发模式,还能在QQ内被轻松获取和传播。那么qq小程序如何开发与发布呢?随ytkah一起来看看
ytkah
2019/08/14
7.3K0
小程序开发工具全新上线 附下载地址和教程
“为了让开发者更高效地开发和发布小程序,微信开发者工具全新改版上线,并新增测试系统、腾讯云工具、运维性能监控、小程序分阶段发布、WXS脚本语言等”   01、微信开发者工具   为提升小程序开发体验,帮助开发者更高效地开发小程序代码,微信开发者工具全新改版,现面向所有开发者开放。   A 新增 申请测试报告功能。为了方便广大开发者检测小程序程序缺陷、评估小程序产品质量,小程序提供了免费的云真机测试环境以及一整套测试方案。在小程序交付到真实用户手中使用之前,你可以将小程序分发到我们的云平台以模拟用户使用的
ytkah
2018/03/06
1.4K0
小程序开发工具全新上线 附下载地址和教程
干货 | van+mpvue开发微信小程序入门
基于van、mpvue开发的微信小程序,记录了开发前的技术选型、开发时如何搭建环境、上手项目、踩坑等。
极乐君
2020/04/21
2.1K0
干货 | van+mpvue开发微信小程序入门
关于百度智能小程序的一些开发笔记
在开发百度智能小程序前,因为比较喜欢玩儿博客,尤其是wp,所以早在之前开发了一款个人微信小程序。因为微信小程序平台薛定谔的猫般的审核,正所谓狡兔三窟,所以最近考虑把这个小程序复制到百度小程序平台。因此,在初次体验后,对百度小程序的开发有一些初步了解,这篇文章就主要讲讲有关百度智能小程序的一些特点和开发过程中需要注意的一些问题。
夏末浅笑
2018/11/21
7650
关于百度智能小程序的一些开发笔记
小程序管理员的这 9 个权限,你真的都了解吗?| 小程序问答 #54
在第 30 期「小程序问答」文章中,我们介绍了新推出的小程序后台「成员管理」功能。
知晓君
2018/07/27
2.7K0
简约而不简单——大众点评+小程序开发经验谈
腾讯云开发者社区
2017/01/18
7.6K0
小程序协同工作和发布
在中大型的公司里,人员的分工非常仔细:同一个小程序项目,一般会有不同岗位、不同角色的员工同时参与设计开发。
岳泽以
2023/03/17
5410
小程序协同工作和发布
用手机也能看小程序后台数据了!微信你很棒棒哦
这个小程序,能让开发者、运营者在手机上就能查看小程序的运营数据,随时随地掌握小程序的市场反应。
知晓君
2018/08/01
1.4K0
用手机也能看小程序后台数据了!微信你很棒棒哦
微信小程序是如何实现编译的
过往中小企业或技术团队开发一个 App 的时间成本和人力成本居高难下,但是随着微信上线小程序,更像是为这部分群体打开了一扇天窗,此后小程序呈现出井喷式发展的状态,不仅微信,支付宝、百度、抖音等超级 App 都跟上步伐上线小程序平台。
Onegun
2023/01/09
1.6K0
微信小程序是如何实现编译的
小程序怎么开发自己的小程序_微信小程序建议使用
随着科技的不断进步,很多功能将会开放,那么很多需求也将会因为现实而得到满足,这是一种不需要下载和安装就可以使用的应用软件。用户只需扫描和搜索就可以打开应用程序。它很容易使用,而且很容易实现。小程序带来了巨大的流量,吸引了很多大的人和企业家前来追踪,也显示出它强大的生命力。小程序是下一个被确定为互联网新品种的程序,信已经成为不可缺少的交流工具,小程序依附于微信,用户搜索起来也会更方便,其实这就是小程序发展的前景和优势。
全栈程序员站长
2022/11/10
9.4K0
小程序怎么开发自己的小程序_微信小程序建议使用
小程序有更新:开发环境不再限制白名单
今天下午,微信开发者工具进行了更新,此次更新的版本号是 0.11.112200,微信官方已经放出了详细更新日志。 开发者工具更新了哪些功能?如何升级开发者工具?知晓程序(微信号 zxcx0101)现在就来跟大家分享。 有哪些功能更新? 本次更新主要改善了网络调试环节的体验。 在以往,微信开发者工具中的模拟器与真机环境一样,只能访问白名单域名,而且调试环境会针对 TLS 加密版本进行校验。 如果后端无法及时根据白名单和 TLS 要求配置环境,很可能延迟整个小程序开发进度。 最新版的开发者工具,新增了「开发环
知晓君
2018/06/28
1.4K0
小程序工程化探索
上个月(2019年10月)去参加了阿里举办的第二届前端艺术家沙龙,做了小程序工程化的分享,现整理如下。
WecTeam
2019/12/16
1.9K0
小程序工程化探索
如何入门小程序开发
在上一篇教程中,我们教大家使用微信官方Demo快速搭建了一个小相册,并学会了如何安装开发者工具,如何创建小程序,如何做服务端配置。并利用腾讯云COS实现相册上传下载功能。
伤旧
2018/10/31
18.8K2
如何入门小程序开发
相关推荐
小程序工具初探
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验