jvm专题(2):字符串常量池深度讲解,通过源码分析java基本数据类型对应的封装类的赋值

本文深入探讨了Java中的字符串常量池,详细解释了不同字符串操作在内存中的分配,包括1.7及更高版本与1.6版本的区别。同时,文章还介绍了基本数据类型封装类的对象池机制,并通过源码分析了Integer对象池的工作原理,帮助读者理解字符串和对象池的内在联系和内存管理策略。
摘要由CSDN通过智能技术生成

以下知识点如有不同意见或者觉得个人讲错了的,欢迎留言纠正,共同进步,我将不胜感激!

字符串常量池

什么是字符串常量池:就是jvm在执行类似于与String a=“cy” 这样的代码的时候为 “cy” 这种字符串分配的内存空间,类似于一个缓存空间,这样下次有String b="cy"的时候就直接去常量池里面拿了,这样做目的时为了减少jvm在分配内存时的开销。

字符串常量池在内存中的分配: jdk1.7及以上版本常量池时在堆空间里面开辟出一块区域,但是jdk1.6常量池是在我们的永久代里面,属于运行时常量池里面的一部分,特殊说明,以下的理论与实践都是在1.7版本的基础上
Class常量池与运行时常量池的区别: Class常量池是在class文件里里面,我们都知道class文件里面有类的版本,字段,方法,接口等信息的描述,除此之外还有常量池(constant pool table),存放我们编译阶段类生成的字面量符号引用 ,而我们的运行时常量池是在类被加载之后把class常量池里面的内容存于我们jvm的方法区里面,所以说他们最大的区别就是存的位置不同
字面量: 就是由我们字母或者数字构成的字符串或者数值常量
符号引用: 比如我们的方法名成就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值