什么是字符串常量池
JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池
工作原理
当代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用。
实现前提
字符串常量池实现的前提条件就是Java中String对象是不可变的,这样可以安全保证多个变量共享同一个对象。如果Java中的String对象可变的话,一个引用操作改变了对象的值,那么其他的变量也会受到影响,显然这样是不合理的。
更详细的关于字符串常量池  http://droidyue.com/blog/2014/12/21/string-literal-pool-in-java/
关于堆和栈
Java中所有由类实例化的对象和数组都存放在堆内存中,无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。而栈内存用来存储局部变量和方法调用。
更详细的关于堆和栈的区别 http://droidyue.com/blog/2014/12/07/differences-between-stack-and-heap-in-java/
关于寄存器
Java中运行时数据区有一个程序寄存器(又称程序计数器),该寄存器为线程私有。Java中的程序计数器用来记录当前线程中正在执行的指令。如果当前正在执行的方法是本地方法,那么此刻程序计数器的值为undefined
关于JVM运行时数据区的 http://droidyue.com/blog/2014/12/21/java-runtime-data-areas/
关于本题目中,"abc"为字面量对象,其存储在堆内存中。而字符串常量池则存储的是字符串对象的一个引用。

转载于:https://www.cnblogs.com/huststl/p/7659462.html

笔试错题--(字符串常量池和JVM运行时数据区)相关推荐

  1. JVM运行时数据区分析

    #1.概述 整个JVM构成⾥⾯,由三部分组成:类加载器机制.运⾏时数据区.执⾏引擎. #2.JVM运行时数据区的规范 我们来聊聊这个规范怎么理解,目前运行数据区共分为了方法区.堆.虚拟机栈.本地方法栈 ...

  2. JVM运行时数据区和各个区域的作用

    一.JVM主要分为5个核心区域(6个子区域),分别是: 程序计数器 Java虚拟机栈 本地方法栈 Java堆 方法区 *运行时常量池(属于"方法区"的一部分) 二.各个区域作用和描 ...

  3. Java内存管理:Java内存区域 JVM运行时数据区

    Java内存管理:Java内存区域 JVM运行时数据区 在前面的一些文章了解到javac编译的大体过程.Class文件结构.以及JVM字节码指令. 下面我们详细了解Java内存区域:先说明JVM规范定 ...

  4. Java -----JVM运行时数据区

    一.JVM体系结构 想要了解运行时数据区,先关注一下JVM的体系结构,知道数据区在JVM的整体位置和作用. 二.JVM运行时数据区 1.程序计数器 一块较小的内存空间,它是当前线程所执行的字节码的行号 ...

  5. 掌握JVM 运行时数据区,其实不是很难,加薪也是要技巧可言的!!!

    一.概念 Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分. 而内存模型(Java Memory Model,简称 JMM )是定义了线程 ...

  6. JVM运行时数据区概览

    在学习JVM之前我们需要明确的是,我们所学习的是JVM的一个规范,在实际中有很多不同种类的虚拟机来实现这一种规范.其次JVM运行时数据区和JMM的区别我们要搞清楚,不能将JMM理解为JVM运行是数据区 ...

  7. 一篇文章带你快速理解JVM运行时数据区 、程序计数器详解 (手画详图)值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话:"八小时内谋生活,八小时外谋发展. ...

  8. Java8 JVM运行时数据区概述 (极其详细长文)

    文章目录 运行时数据区概述 JVM中的线程说明 PC寄存器(PC Register) PC寄存器介绍 使用举例 问题:使用PC寄存器存储字节码指令地址有什么用?为什么使用PC寄存器存储? 问题:为什么 ...

  9. Java程序员必知必会之JVM运行时数据区

    JVM类加载概述 JVM垃圾回收概述 运行时数据区概述 程序计数器(Program Counter Register) 是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器,指向下一个将要 ...

  10. 【JVM学习-3.6】JVM运行时数据区--方法区

    文章目录 1. 栈.堆.方法区的交互关系 2. 方法区的理解 2.1 方法区在哪? 2.2 方法区的基本理解 2.3 Hotspot中方法区的演进 3. 设置方法区大小与OOM 3.1 jdk7及以前 ...

最新文章

  1. 查看dev下设备名的含义
  2. python编程题-python编程题库
  3. mysql建表的auto_increment_koa2+koa+mysql快速搭建nodejs服务器
  4. Python Flask web 项目零改动迁移至阿里云函数计算
  5. 中南大学计算机085403,What?这些个专业改考数一英一了!
  6. mycat 10 分钟轻松入门
  7. C语言中的匿名结构体
  8. 计算机设备抽象,计算机系统原理(三) 金字塔形的存储设备、操作系统的抽象概念...
  9. WebService客户端开发(Axis2 1.5)
  10. ILSpy 反编译的一个工具,用于以后的使用
  11. dreamweaver网页设计作业制作 学生个人网页单页 WEB静态网页作业模板 大学生个人主页博客网页代码 dw个人网页作业成品简单页面
  12. 监控网站与接口宕机,并推送 App 消息提醒的程序
  13. 《东周列国志》第八十一回 美人计吴宫宠西施 言语科子贡说列国
  14. Python爬虫入门教程15:音乐网站数据的爬取
  15. Weex实战分享|企鹅电竞Weex实践和性能优化
  16. 深入Array.prototype.slice()方法
  17. MARA常规物料数据
  18. C++程序设计:原理与实践(进阶篇)16.3 通用搜索算法f?ind_if()
  19. python爬虫免费python课程
  20. 第二章:3ds max材质和贴图

热门文章

  1. OSPF邻接关系建立过程
  2. puppet详解(四)——package资源详解
  3. CTF中文件与16进制互转及相关操作(Python3)
  4. MySQL多版本并发控制机制(MVCC)-源码浅析
  5. uva-110-没有for循环的排序
  6. 在 Ubuntu 上配置高性能的 HHVM 环境
  7. Mybatis配置映射文件中parameterType的用法小结
  8. 腾讯云启动 tomcat 很慢的问题
  9. 配置管理小报091103-2: CVS中的tag规则
  10. 【百度地图API】建立全国银行位置查询系统(二)——怎样为地图添加控件