如图,jmap打出的heap中,同时出现了[C和String。
有点奇怪的是,String本身是用final char[]来保存的,这里同时列出来,意味着[C的实例数和内存占用是包括String的,还是说String是单独统计的?
如图,jmap打出的heap中,同时出现了[C和String。
有点奇怪的是,String本身是用final char[]来保存的,这里同时列出来,意味着[C的实例数和内存占用是包括String的,还是说String是单独统计的?
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
String实际占用的内存应是上图的
String
+[C
的才对.为验证这个我写了个小程序
编译
分别运行
并另打开一个终端窗口分别查看
分配
100M+
字符的情况不分配的情况
两种情况字符串字节数相差27528-24600=2928
字符数组字节数相差209829280-110832=209718448
实际上100M+数字字符在内存占200M+字节