美文网首页
【JVM】JVM存放字符串的位置

【JVM】JVM存放字符串的位置

作者: 躁动的中年大叔 | 来源:发表于2019-06-23 14:00 被阅读0次

字符串存放的位置有两个:字符串常量池堆内存

  1. 使用常量字符串初始化的字符串对象,它的值存放在字符串常量池中;
String str = "Hello World!";
  1. 使用字符串构造方法创建的字符串对象,它的值存放在堆内存中;
String str = new String("Hello World!");

JDK 1.7之前,字符串常量池是在PermGen区域;
JDK1.7之后,字符串常量池移到了堆内存中,并且可以被垃圾收集器回收。

intern方法

String提供了一个API: java.lang.String.intern(),它可以手动将一个字符串对象的值存储到到字符串常量池中。

intern方法的实现底层是一个native方法,在Hotspot JVM里字符串常量池它的逻辑在注释里写得很清楚:如果常量池中有这个字符串常量,就直接返回,否则将该字符串对象的值存入常量池,再返回。

相关文章

  • 【JVM】JVM存放字符串的位置

    字符串存放的位置有两个:字符串常量池和堆内存。 使用常量字符串初始化的字符串对象,它的值存放在字符串常量池中; 使...

  • 016:字符串对象在JVM中是如何存放的

    本文首发于公众号:javaadu 典型答案 字符串对象在JVM中可能有两个存放的位置:字符串常量池或堆内存。 使用...

  • 面试官:字符串对象在JVM中是如何存放的

    典型答案 字符串对象在JVM中可能有两个存放的位置:字符串常量池或堆内存。 使用常量字符串初始化的字符串对象,它的...

  • Java程序员必会知识——JVM内存模型

    JVM基本结构 JVM内存区域主要分为 、 和 。 概念介绍 方法区(线程共享数据区域) 主要存放JVM加载的类信...

  • 插件化,热修复基础之虚拟机

    java虚拟机 jvm jvm整体结构 jvm内存空间 java 栈区 它存放的是java方法执行时的所有的数据栈...

  • JVM 面试整理

    JVM 内存结构,运行时数据区各模块什么作用、存放什么数据 jvm 内存结构包含:heap堆区:负责存放所有的 对...

  • 深入理解JVM

    JVM的位置 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的...

  • JVM面试详解

    1、JVM构成 Java栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类...

  • JVM浅析之二:运行时数据区域

    下面从线程共享角度来说明JVM运行时数据区域 线程私有: PC寄存器:存放线程内执行指令的地址 JVM栈:存放基本...

  • 一篇了解JVM堆(Heap),你学会了吗?

    1.JVM堆的概念 JVM中的堆是用来存放对象的内存空间,几乎所有的Java对象、数组都存储在JVM的堆内存中。比...

网友评论

      本文标题:【JVM】JVM存放字符串的位置

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