我已阅读以下帖子:
How does the JVM check if a string is already in the string pool?
他们都没有提到JVM使用的搜索算法来搜索先前已经创建并存在于所谓的"字符串池中的字符串文字。"
答案 0 :(得分:0)
字符串池的实现是使用本机语言完成的,即 c / c ++ ,使用Java Native Interface(JNI)和共享库
You can read how to do this here
根据我的说法,字符串池已经使用实现了
You can read about tries here trie
数据结构
Trie
将取O(l),其中l是请求字符串的长度,是搜索字符串池的时间。
UPD1:字符串池已实现为哈希表,并且可以使用-XX:StringTableSize=<value>
更新池的内存分配。
虽然我觉得使用trie
本来会更好,因为trie
可以在同一空间容纳更多数量的字符串,而不是hash-table