Java 中字符串的内存分配

💡 原文英文,约800词,阅读约需3分钟。
📝

内容提要

Java中,字符串以String类的对象形式存储在内存中,内存分为堆栈和堆两部分。堆内存中有字符串常量池,用于存储唯一的字符串字面量。堆栈内存中存储变量和对象引用。创建字符串对象有两种方式:字符串字面量和使用new关键字。通过“==”运算符比较物理地址,通过equals函数比较内容。使用字符串字面量节省内存空间,但常量池大小有限。使用new关键字创建对象可以释放不需要的对象,但会增加JVM负担。

🎯

关键要点

  • Java中的字符串以String类的对象形式存储在内存中。

  • 内存分为堆栈和堆两部分,堆内存中有字符串常量池用于存储唯一的字符串字面量。

  • 创建字符串对象有两种方式:字符串字面量和使用new关键字。

  • 通过'=='运算符比较物理地址,通过equals函数比较内容。

  • 使用字符串字面量节省内存空间,但常量池大小有限。

  • 使用new关键字创建对象可以释放不需要的对象,但会增加JVM负担。

  • 字符串字面量创建时,JVM会检查常量池中是否已存在该字面量。

  • 使用new关键字创建字符串对象时,会在堆和常量池中各创建一个对象。

  • 比较字符串对象时,'=='运算符比较物理地址,equals函数比较内容。

  • 字符串常量池的大小是固定的,可能会满。

  • 使用new关键字会增加JVM的负担,因为每次都会创建新对象。

➡️

继续阅读