mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-16 18:10:13 +08:00
Update memory-area.md
同步修改字符串常量池的描述
This commit is contained in:
parent
0d308e7eb2
commit
d011ff6161
@ -242,12 +242,12 @@ Class 文件中除了有类的版本、字段、方法、接口等描述信息
|
|||||||
**字符串常量池** 是 JVM 为了提升性能和减少内存消耗针对字符串(String 类)专门开辟的一块区域,主要目的是为了避免字符串的重复创建。
|
**字符串常量池** 是 JVM 为了提升性能和减少内存消耗针对字符串(String 类)专门开辟的一块区域,主要目的是为了避免字符串的重复创建。
|
||||||
|
|
||||||
```java
|
```java
|
||||||
// 在堆中创建字符串对象”ab“
|
// 在字符串常量池中创建字符串对象 ”ab“
|
||||||
// 将字符串对象”ab“的引用保存在字符串常量池中
|
// 将字符串对象 ”ab“ 的引用返回给引用 aa
|
||||||
String aa = "ab";
|
String aa = "ab";
|
||||||
// 直接返回字符串常量池中字符串对象”ab“的引用
|
// 直接返回字符串常量池中字符串对象 ”ab“,赋值给引用 bb
|
||||||
String bb = "ab";
|
String bb = "ab";
|
||||||
System.out.println(aa==bb);// true
|
System.out.println(aa==bb); // true
|
||||||
```
|
```
|
||||||
|
|
||||||
HotSpot 虚拟机中字符串常量池的实现是 `src/hotspot/share/classfile/stringTable.cpp` ,`StringTable` 可以简单理解为一个固定大小的`HashTable` ,容量为 `StringTableSize`(可以通过 `-XX:StringTableSize` 参数来设置),保存的是字符串(key)和 字符串对象的引用(value)的映射关系,字符串对象的引用指向堆中的字符串对象。
|
HotSpot 虚拟机中字符串常量池的实现是 `src/hotspot/share/classfile/stringTable.cpp` ,`StringTable` 可以简单理解为一个固定大小的`HashTable` ,容量为 `StringTableSize`(可以通过 `-XX:StringTableSize` 参数来设置),保存的是字符串(key)和 字符串对象的引用(value)的映射关系,字符串对象的引用指向堆中的字符串对象。
|
||||||
|
Loading…
x
Reference in New Issue
Block a user