【问题标题】:Memory size in profiling when i try to detect memory leak当我尝试检测内存泄漏时分析中的内存大小
【发布时间】:2012-11-25 20:54:48
【问题描述】:

我用-Xms512m -Xmx1G -Xss1G 运行java 程序。我进行分析以验证内存,所以我Track every 10 object allocations。我观察这个数字:

我的问题是,为什么它显示 117mo 代表 40% 而我将 1G 给记忆?

【问题讨论】:

  • 分配内存的 40%,我要求 netbeans 以 1G 内存运行程序?而且170mo不是1G的40%!
  • 1G 是分配给 java 进程的总内存,我说的是为 1G 内的对象分配的内存,通常较小
  • 当然是1G以内。但是当你重播我40% of allocated memory时!那么什么是 100%?
  • 我不熟悉 netbeans 但我会使用堆快照来分析堆分配
  • 我用的是JProfiler,不过你也可以试试YourKit,visualvm

标签: java memory netbeans profiling heap-memory


【解决方案1】:

图表是所有分配的百分比,而不是堆大小。将该屏幕截图中的所有百分比相加,它们会达到 ~100%

【讨论】:

  • 如果我理解您的回复,例如,当我有 50 000 allocated object 时,170mo 需要 40%。那么50 000 代表所有对象分析的40%?`
  • 仅分配的 117Mo 占所有被监控分配的 40.6%。除非所有对象占用完全相同的内存量,否则对象的数量并不是一个真正的因素。
  • 那么,如何推断分配的总内存?
  • 找到一个分析器(或当前的一个选项),它将显示总堆使用情况,或者只是将所有窗口加起来。
  • 当我添加该窗口时,它不超过300mo,当我显示heap used 时,它超过600mo。你可以在今天早上提出我的问题link
猜你喜欢
  • 2023-04-05
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
相关资源
最近更新 更多