string table
时间: 2023-10-02 08:05:27 浏览: 93
String table是Java虚拟机中的一个数据结构,用于存储字符串常量。它是一种特殊的哈希表,用于实现字符串的复用。当我们使用字符串字面量创建String对象时,JVM会将这些字符串常量存储在String table中。这样,如果我们再次使用相同的字符串字面量创建String对象,JVM会直接从String table中获取已经存在的字符串对象,而不会再创建新的对象。这样可以减少内存的使用,提高程序的性能。\[1\]
然而,如果我们使用"+"或其他方法来拼接字符串,生成的新字符串将会单独存在于堆区,而不会被添加到String table中。因此,String table的复用是有限的。根据JVM官方的统计,Java应用内存中的字符串大约占总内存的25%,其中有13.5%的字符串是重复的。\[2\]
需要注意的是,当我们使用new String()的方式创建字符串对象时,无论字符串常量是否存在于String table中,都会在堆中创建一个新的字符串对象。这是因为new关键字会强制创建一个新的对象,而不会使用String table中已有的对象。\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [String及StringTable(二):java中的StringTable](https://blog.csdn.net/dhaibo1986/article/details/107943519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文