如何“大小”,在JVisualVM的堆转储计算

问题描述 投票:0回答:1

我正在运行的Java VM可视化分析在骡子的应用程序性能,减少内存使用量。当我看着堆转储,我看到的char []的大小为超过37 MB,字符串的大小有点超过28 MB。

什么我不是清楚的是规模列如何占的内存使用量。特别是,由于字符串是一个char []的抽象,我想知道如果这意味着一些37 MB字符数组的也是28 MB字符串中存在,或者如果它们被分别分配。

最重要的是,我也有,我怀疑是占用内存很大,并包含几个字符串的一类,但根据我的堆转储,这个类只使用在堆内存总量的6.5%。

所以我想我的问题是...如果我让我的自定义类更有效的通过使用较少的String对象,我会看到在报告由字符串和字符[]里可以使用的内存量,或者只是为了减少特定类?

谢谢!

java string memory-management mule visualvm
1个回答
0
投票

霍尔格的评论是我所需要的...

“大小仅包括用于对象本身,而不是任何引用的对象的存储器(和阵列的对象)”。

仅这给了我我怎么可以优化一个更好的主意。

© www.soinside.com 2019 - 2024. All rights reserved.