java - 当我进行分析时内存的奇怪行为

标签 java memory netbeans memory-leaks profiling

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

有人可以解释一下为什么最大的对象最多需要 35mo 而同时使用的堆超过 500 ?以及如何计算使用的堆

最佳答案

您可能没有分析所有对象创建。 Netbeans 中的标准分析设置之一仅分析十分之一的对象创建。您的测量显示 35MB 占您数据的 51%。所以您总共分析了 70MB。这大约是您测量的总堆大小的 1/10。

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

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

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

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

关于java - 当我进行分析时内存的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13761179/

相关文章:

java - NetBeans IDE - ClassNotFoundException : net. ucanaccess.jdbc.UcanaccessDriver

升级到 Yosemite 后 Netbeans 无法使用

java - 将android代码打包成jar文件

java - 如何在我定义的 Java 对象中覆盖返回具有唯一实体 ID 的唯一哈希码值的哈希码方法?

java - Hibernate Session.get() 会两次访问数据库还是只访问一次数据库?

Spring PermGen 空间问题

java - 使用 JNI 读取带偏移量的内存

java - oAuth 2 实现 java

java - AndroidManifest.xml 无法正确编译

.net - PeakWorkingSet64,没有给我正确的结果