首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Java字符串池的几个查询

关于Java字符串池的几个查询
EN

Stack Overflow用户
提问于 2010-09-06 17:28:51
回答 1查看 1.3K关注 0票数 2

我对java字符串池有以下查询:

  1. 是java堆的一部分吗?根据我的理解,它是JVM?.As本机堆的一部分吗?
  2. ,我们对这个字符串池的大小有什么限制吗?或者它是用户可配置的?
  3. ,在下面两条语句中

String str = "Stack";String str2 =str2

根据我的理解,第一个字符串文本将是字符串池的一部分,但在此之后,我在同一个字符串池对象上进行了连接,它将创建新的string对象,因此该对象是在字符串池中分配还是在字符串池外的java堆中分配呢?

4.我假设字符串池大小是固定的,那么如果这个字符串池被完全占用会发生什么? gc会清理字符串池吗?或者JVM可以扩展字符串池大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-06 17:38:16

在当前的Sun/Oracle实现中,实习生字符串将与类数据一起在Java堆的永久生成中进行。字符串没有单独的内存区域。

这个区域的最大大小可以使用命令行选项(-XX:MaxPermGen或其他什么)进行配置。

通常,concat将创建一个与其他对象一样分配的新String对象。

如果PermGen被填满,那么您将得到一个OutOfMemoryError。GC通常在PermGen上运行,但频率较低。

所有这些都可能在实现和版本之间发生更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3653255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档