【问题标题】:How to calculate memory usage of an object?如何计算对象的内存使用量?
【发布时间】:2011-04-27 18:53:44
【问题描述】:

我正在为android应用程序实现一个缓存系统,我需要添加一个参数来指定允许缓存的最大内存量,但我不知道如何计算对象使用的内存。

【问题讨论】:

标签: java caching memory-management


【解决方案1】:

显然 1.5 添加了一个检测接口。看看这篇文章

http://www.javapractices.com/topic/TopicAction.do?Id=83

您可以使用 getObjectSize() 方法。它的实现是具体的和近似的,但总比没有好

【讨论】:

【解决方案2】:

您可以考虑获取应用程序的堆转储并观察其保留堆

【讨论】:

  • 要生成堆转储,请使用 heapViewer(JDK5.0 起)。它位于 %JDK_HOME%\demo\jvmti\heapViewer 您可以使用 -agentlib 选项从命令行启动该功能。您可以使用 Ctrl-C 或 Ctrl-\ (SIGQUIT) 触发转储。
【解决方案3】:

这取决于对象。计算对象的每个部分在分配时占用多少内存以获得对象最大大小的基线。

【讨论】:

  • 考虑提供一个如何做到这一点的例子。
猜你喜欢
  • 1970-01-01
  • 2013-03-31
  • 2020-12-07
  • 2011-09-03
  • 2016-10-21
  • 2011-02-27
  • 1970-01-01
  • 2021-06-14
相关资源
最近更新 更多