【发布时间】:2020-04-05 12:59:34
【问题描述】:
我有一个内存使用奇怪的 java 应用程序,我注意到内存消耗明显高于最大堆大小(Xmx 是 800m,使用情况是 1.4g)。
在此之前的最近更改之一是使用的唯一字符串大量增加,所以我想我可能有很多字符串在堆外使用了大量内存 - 这可能吗?
我正在运行 java 11。
编辑:
例如,在this article 中提到:
当我们使用 new() 操作符创建一个 String 对象时,它总是在堆内存中创建一个新对象。 另一方面,如果我们使用字符串字面量语法创建一个对象,例如“Baeldung”,如果它已经存在,它可能会从字符串池中返回一个现有对象。
给出 2 个不同区域的印象 - 堆和字符串池。
【问题讨论】:
标签: java string memory jvm java-11