2

我在进行分析时遇到了一个奇怪的问题。我解释一下,在下图中,我们可以清楚地看到最大的物体只取35mo. 看这个图: 图1 。但是当我验证同时使用的内存时,我说它超过了500mo 图2

有人可以向我解释为什么最大的对象占用最大值35mo而使用的堆同时超过500?以及如何计算heap used

4

1 回答 1

2

可能您没有分析所有对象创建。Netbeans 中的标准配置文件设置之一仅配置 10 个对象创建中的 1 个。您的测量结果表明 35MB 是您数据的 51%。因此,您总共分析了 70MB。这大约是您测量的总堆大小的 1/10。

一般来说,如果您正在寻找有关谁是最大的记忆消耗者的线索,则仅测量部分创作就足够了。不跟踪所有创作的原因是性能。

如果您想查看所有内存的使用情况,可以执行以下操作:

在 Netbeans 6.9.1 中,这是一个设置为“跟踪每个 ... 对象分配”。您可以降低这个数字(如果十分之一不能帮助您找到问题,也不能告诉您有关应用程序的足够信息)。但是,这可能会使您的应用程序无法运行。

您还可以进行堆转储。这将不包含有关创建和删除对象的信息,但它会告诉您应用程序中当前处于活动状态的所有对象。

于 2012-12-07T10:41:37.520 回答