我正在运行递归操作的 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/