一句话说明java常量池及其存储的对象
java虚拟机内存结构有了堆、栈、方法区,那么这个常量池又是个什么东东,为何又突然想到常量池这个概念呢,是因为面试官有一问,String a=new String("常量池常量"),这行代码中的对象在内存里是怎么分配的,平时都问框架问并发问什么的,这么基础的知识点突然一问不免很上头,也侧面反应了我对基础底层的知识理解还不够,然后后来翻资料,自己概括是这样的,申明一个字符串对象a,String a;这个还没实例化也就是还没new值"常量池常量"的对象a是存放在栈中(实例化new后,会在堆中开辟一块内存存放对象a,而对于对象a的引用指向依然存在于栈中,当栈对a的引用指向删除后,堆也会删除对象a),然后给值"常量池常量"这个字面量值会先在常量池中查找,如果找到就将a的指引指向存"常量池常量"这个字面量,如果没找到,也将这个字面量存储于常量池中,再将a的指引指向在"常量池常量"这个字面量,如果是String a="常量池常量",那么数据对象又是怎么存储于内存的呢,少了实例化new这一步,那么就不会在堆中开辟一个对象a的内存,而是只在栈中存在a的指引,然后把这个指引指向字面量"常量池常量";于是就有了新的问题,"常量池常量"为什么不存在堆、栈、方法区而是存在常量池里,常量池又是个什么东东,下面来解释,常量池是不同于堆、栈、方法区的特殊存储区域,目前jdk1.7开始,常量池分别在方法区和堆中各划分一块内存区域,方法区中的常量池主要存储class编译加载时字节码中产生的常量已及java运行时的字面量符号引用等,而堆常量池主要存储字符串常量,所以,一句话解释面试官的这个问题就是,对象a存在于堆里,而对对象a的引用存在于栈中,对象a的字面量值"常量池常量"存在于堆常量池里…
一句话说明java常量池及其存储的对象相关推荐
- Java常量池的大概理解
触摸java常量池 java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这次好好总结一下. 理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器是jvm ...
- java 常量池 和 堆 的关系_Java堆、栈和常量池以及相关String的详细讲解(经典中的经典)...
博客分类: Java综合 一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有 ...
- [转载] java常量池-字符串常量池、class常量池和运行时常量池
参考链接: 如何在Java中初始化和比较字符串 原文链接:http://tangxman.github.io/2015/07/27/the-difference-of-java-string-pool ...
- Java常量池[乐乐独记]
Java常量池[乐乐独记] 1.字面量和符号引用 1.1.字面量 1.2.符号引用 2.常量池 2.1.静态常量池 2.2.运行时常量池 2.3.字符串常量池 2.3.1.字符串常量池的概念 2.3. ...
- JAVA8常量池监控_深入探索Java常量池
Java的常量池通常分为两种:静态常量池和运行时常量池 静态常量池:class文件中的常量池,class文件中的常量池包括了字符串(数字)字面值,类和方法的信息,占用了class文件的大部分空间. 运 ...
- java 常量区存放 new_java---堆、栈、常量池的存储数据
说到Java中堆.栈和常量池,首先还是看看他们各自存放的数据类型吧! 栈: Java的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method)也叫静态存储区. 堆区:(存放所 ...
- java 常量池详解
参考资料:http://chenzehe.iteye.com/blog/1727062 注意: 1.首先,我们平时在讨论字符串新建问题时所说的常量池其实指的是字符串常量池.并不是运行时常量池,更加不是 ...
- Java常量池理解与总结
2019独角兽企业重金招聘Python工程师标准>>> 一.相关概念 什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实 ...
- java 常量池溢出_Java方法区和运行时常量池溢出问题分析(转)
运行时常量池是方法区的一部分,方法区用于存放Class的相关信息,如类名.访问修饰符.常量池.字段描述.方法描述等. String.intern()是一个native方法,它的作用是:如果字符串常量池 ...
- java常量池方法区_Java方法区和运行时常量池溢出问题分析
运行时常量池是方法区的一部分,方法区用于存放Class的相关信息,如类名.访问修饰符.常量池.字段描述.方法描述等. String.intern()是一个native方法,它的作用是:如果字符串常量池 ...
最新文章
- PacBio Sequencing and Its Applications PacBio测序及其应用
- tensorflow 的输入层和输出层维度注意事项
- python学精通要多久-学Python编程难吗 从入门到精通学习Python要多久
- 【数据结构与算法】之深入解析“外观数列”的求解思路与算法示例
- 使用Spring Redis发布/订阅
- eclipse闪退打不开问题
- MaxCompute Studio使用心得系列6——一个工具完成整个Python UDF开发
- 二级c语言笔试58,全国计算机等级考试-二级C语言笔试试题.doc
- 基于CUDA的粒子系统的实现
- 手机电池快速充电的方法和原理
- java希尔密码,希尔
- 群晖Nas通过jellyfin搭建本地影音库详细全过程(一):通过群晖系统docker容器安装jellyfin影音库服务器
- 中观到底有没有立宗?
- C++ Reference: Standard C++ Library reference: C Library: cfenv: FE_DOWNWARD
- 游戏开发九宫格战斗架构解析具体解释
- 打造个性QQ,适合网吧做自己安全的QQ
- c语言输出字母是问号,为什么数组输出会多一个问号
- 无人巴士和无人出租车都能用的L4自动驾驶通用硬件方案
- cnc初学入门零基础操机,加工中心入门基础知识
- [原创]-Day5.数据可视化之Pyecharts