当我进行分析时,我有一个奇怪的问题。我解释一下,在下图中,我们可以看到,最大的对象只需要35mo
。看到这个数字:
。但是,当我验证同时使用的内存时,我发现它超过500mo
有人可以解释为什么最大的对象在使用的堆超过35mo
的同时最多占用500
?以及如何计算heap used
?
答案 0 :(得分:2)
可能您没有分析所有对象创建。 Netbeans中的标准配置文件设置之一仅配置了10个对象创建中的1个。您的测量值为35MB,是您数据的51%。所以你总共有70MB的资料。这大约是您测量的总堆大小的1/10。
一般来说,如果你正在寻找谁是大记忆消费者的线索,那么只测量部分创作就足够了。不跟踪所有创作的原因是表现。
如果您想查看所有内存的使用位置,可以执行以下操作:
在Netbeans 6.9.1中,这是一个设置'跟踪每个...对象分配'。您可以降低此数字(如果十分之一不能帮助您找到问题,也不会告诉您足够的应用程序)。但是,这可能会导致您的应用程序无法运行。
您还可以进行堆转储。这不包含有关创建和删除对象的信息,但它会告诉您应用程序中当前处于活动状态的所有对象。