学习JVM的时候经常会遇到各种常量池,不同版本的JDK它们的存储位置也不同,这篇随笔就整理下几种常见的常量池,以JDK1.8为主。先看一张存储示意图,里面涉及1.8和1.6。 常量池是存储在方法区中的,比如我们有这样一段代码:public class Demo {
public static void main(String[] args) {
System.ou
转载
2023-09-07 20:43:46
118阅读
1、常量字面量包括:1.文本字符串 2.八种基本类型的值 3.被声明为final的常量等;符号引用包括:1.类和方法的全限定名 2.字段的名称和描述符 3.方法的名称和描述符。2、常量池分类类文件常量池:又称为静态常量池,存储区域在堆中,编译时产生对应的class文件,主要包含字面量和符号引用;运行时常量池:存在元数据(Meta Space)空间,JVM运行时,在类加载完成后,将每个class常量
转载
2023-07-17 12:09:29
92阅读
# Java JVM 常量池实现指南
作为一名经验丰富的开发者,我将向你介绍如何在Java中实现JVM常量池。JVM常量池是Java虚拟机(JVM)中用于存储类、方法和字段符号引用的地方。它在编译期间创建,并在运行时被JVM使用。
## 步骤流程
下面是一个表格,展示了实现Java JVM常量池的步骤:
| 序号 | 步骤 | 描述
原创
2024-07-24 06:34:37
22阅读
最近正好在研究这个问题,题主问题本身是有问题的,在JDK7中HotSpot的常量池是放在Java Heap中,并非题目中的native memory中。在JDK6中是放在Perm Space。题主可以用JDK6和JDK7分别试一下。说一下题主的那段代码,要一分为二,JDK6/JDK7及以上JDK6:
转载
2018-07-10 18:17:00
178阅读
2评论
一、Class常量池解析 定义:Class常量池可以理解为是Class文件中的资源仓库。 内容:Class文件中除了包含类的版本、
原创
2024-07-28 11:51:12
47阅读
文章目录Preclass常量池字面量符号引用符号引用PreJVM - 深入剖析字符串常量池JVM - 基本类型的包装类和对象池class常量池Class常量池我们可以理解为是Class文件中的资源仓库。Class文件中主要由两大部分 类的版本、字段、方法、接口等描述信息外,常量池(constant pool table),用于存放编译期生成的各种字面量(Literal)和符号引用(Symbolic References)。我们来看下我们天天打交道的class文件十六进制的样子 大
原创
2021-05-31 16:04:43
1176阅读
文章目录Preclass常量池字面量符号引用符号引用PreJVM - 深入剖析字符串常量池JVM
原创
2022-03-28 13:37:00
234阅读
jvm虚拟内存分布: 程序计数器是jvm执行程序的流水线,存放一些跳转指令。 本地方法栈是jvm调用操作系统方法所使用的栈。 虚拟机栈是jvm执行java代码所使用的栈。 方法区存放了一些常量、静态
转载
2023-07-18 21:33:06
71阅读
本人最近正在面试,然后注意到总是有公司喜欢考String的问题,如字符串连接有几种方式,它们之间有什么不同等问题;要不就是给一段代码问创建了几个对象。
转载
2023-05-22 22:22:21
137阅读
调优分成3种一.JVM调优1:JVM内存的分代划分栈不用管,JVM将内存分成新生代,
原创
2022-10-11 16:40:08
64阅读
常量池 主要包括下面2类: 1. 字面量(Literal):如int,double,String等; 2. 符号引用(Symbolic Reference); 符号引用 1. 类和接口 的全限定名; 2. 字段 的名称和描述符; 3. 方法 的名称和描述符; 当虚拟机运行时,需要从 常量池 中获取对
原创
2022-05-04 22:58:43
317阅读
本文主要讲述三种常量池: Class 常量池、字符串常量池、还有基本类型常量池。 Constant pool: 下面的内容就是常量池,常量池中主要存放的是字面量和符号引用。 字面量就是指字母、数字等构成的字符串或者数值常量。 字面量只可以以右值出现,所谓右值是指等号右边的值,如…
原创
2022-04-12 16:14:47
399阅读
在jvm规范中,每个类型都有自己的常量池。常量池是某类型所用常量的一个有序集合,包括直接常面引用几个例子:
转载
2022-08-22 21:01:07
44阅读
jvm中的常量池有三种:字符串常量池、class常量池、运行时常量池。 字符串常量池jdk7.0以后(包括现在最新的jdk8),字符串常量池存在于jvm堆中(这与运行时常量池不同)。既然是在堆中,字符串常量池里存放的自然是“对象”。每次字符串常量池返回给用户的都是这个对象的引用地址。在java中字符串的创建一直有两种方式,一种是new出来,这种就是创建一个新的字符串对象。第二种是直接引号
转载
2023-07-18 19:54:28
30阅读
这里写自定义目录标题前言基本介绍字符串常量池中存储内容String s = new String("abc")与String s = "abc" 前言我们都知道java有很多中常量池,如字节码常量池Constant pool、运行时常量池、字符串常量池String table、Integer等基本数据类型常量池,各自之间很容易混淆,今天我们就来探索一下字符串常量池。基本介绍字符串常量池Strin
转载
2023-11-26 11:48:28
20阅读
JVM 基础入门 - 字符串常量池说明字符串常量池字符串驻留字符串字面量什么是字符串常量池特性存放位置数据结构存放内容放入规则深入了解代码详解总结: 说明JVM 中的字符串常量池是一个非常有争议的概念,各类书籍和网站上众说纷纭。而且没有官方定义,所以我们从他的作用和 JVM 设计他解决什么问题来分析它。字符串常量池字符串驻留字符串驻留(String interning)是字符串常量池产生的根本
转载
2024-02-21 14:21:42
39阅读
一、概述方法区,内部包含了运行时常量池;字节码文件,内部包含了常量池;要弄清楚方法区,需要理解清楚ClassFile,因为加载类的信息都在方法区;要弄清楚方法区的运行时常量池,需要理解清楚Class File文件中的常量池;一个有效的字节码文件中除了包含类的版本信息、字段、方法以及接口等描述信息外,还包含一项信息,那就是常量池表(Constant Pool Table),包括各种字面量和对类型、域
转载
2023-08-06 00:28:12
123阅读
Start with JVM 周志明先生著-《深入理解Java虚拟机》,书买回来好几天了,但是最近才准备开始搞一搞了(哭瞎…..)。首先是第一章的Java以及JVM发展历史,大概知道了现行的应用最广泛的Java虚拟机是HotSpot,当然一些商业公司也有使用自己的虚拟机。 JVM运行时数据区 这是放
转载
2018-07-17 06:28:00
142阅读
2评论
目录JVM中的常量池一、class常量池1.1 字面量1.2 符号引用二、字符串常量池三、三种创建字符串的方式(jdk1.7及以上版本)四、字符串常量池的位置JVM中的常量池一、class常量池Class常量池可以理解为是Class文件中的资源仓库。Class文件中除了包含类的版本、字段、方法、接口等信息外,还有一项信息就是常量池(constant pool table),用于存放编译器生成的各种
转载
2023-12-18 23:09:43
27阅读
String的基本特性 String:字符串,使用一对""引起来表示。 String sl = "hello";//字面量的定义方式; String s2 = new String("hello") ; String类是已经被声明为final的, 不可被继承。 String实现了Serializab
原创
2021-11-19 14:22:36
275阅读