java - 为什么探查器在我没有创建任何 char[] 实例时显示大量实例?

标签 java profiling

我正在运行递归操作的 NetBeans 配置文件,其中包括创建一个带有 java.lang.String 字段的类。在类列表中,在配置文件堆转储中,字符串字段的数量对应于按预期创建的类的数量,但是也有类似数量的 char[] 实例。 char 数组占内存使用量的近 70%(!),而 String 字段占大约 7%。

这是怎么回事?我怎样才能减少 char[] 实例的数量?

谢谢

最佳答案

看看 String source code . String 对象本身包含缓存的哈希码、字符数(同样,出于优化目的)、偏移量(因为 String.substr() 指向原始字符串数据)< em> 和 字符数组,其中包含实际的字符串数据。因此,您的指标显示 String 消耗相对较少,但大部分内存都被底层字符数组占用。

关于java - 为什么探查器在我没有创建任何 char[] 实例时显示大量实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1985480/

相关文章:

java - 在 main 中调用一个类

java - 来自交互式代理 API 的随机响应

python - 如何有效地找到点集合的边界框?

spring - 基准/分析最大用户可以支持 Web 应用程序

android-studio - 如何在 "trace java methods"模式下使用探查器启动应用程序?

java - Spring 验证 - NULL 或有效的 url

java - 使用比较器实例化 TreeMap,该比较器应该能够访问所述 TreeMap

java - 是否可以编写逻辑形式 "then if"的条件?

python - 为什么 Python 代码在函数中运行得更快?

tomcat - 在 VisualVM 中禁用执行 GC 和 CPU 监视