字符串是不可变的,并在字符串池中进行管理。我想知道这个池是如何管理的。如果在应用程序中使用了大量的字符串字面量,(我理解应该在追加、替换操作等修改较多时使用字符串生成器)然后 Pool 通过不一次又一次地重新创建新的字符串对象来提高应用程序的性能但是使用池中存在的相同对象,这是可能的,因为字符串是不可变的,这样做不会产生不良影响。
我的问题是如何String Pool
管理。如果某些“k”字符串的频率很高,并且可能很少有其他字符串对象一旦创建就不会再次使用。可能使用了其他较新的字符串文字。
在这种情况下,字符串池的行为是否像 LRU 缓存一样,保存对最新使用的文字的引用并从池中删除较旧的未使用字符串?
字符串池是否有大小,或者我们可以在我们的应用程序中控制它吗?
编辑 :
通常我们为我们实现的自定义对象池分配大小。我想知道为什么 Sting Pools 没有像 LRU 这样的功能。这可能是一个功能。在大字符串的情况下也不会有问题。但我觉得它的实现方式是这样的,但我只是想知道它为什么不存在,我的意思是它不存在是出于某种正当的原因,拥有这个功能会导致一些不良影响。如果有人可以对这些不良影响有所了解,那就太好了。