Android&Dalvik 如何获取对象的大小?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (91)

我们通常都知道,Java 5引入了Instrumentation轻松获取对象大小的功能。Android和Dalvik上有这种方法吗?

提问于
用户回答回答于

对于它的价值,我查看了Dalvik VM源代码,并找不到任何稳定的API来获取Object的大小。如果你想自己看看,一个对象的大小存储在ClassObject::objectSize : size_t,请参阅dalvik / vm / oo / Object.h

但是,有 内部 API来获取对象的大小。DDMS使用它来报告有关对象大小的详细信息。但是,由于API是内部的,它可能会在不同版本的Android之间发生变化。另外,API会发送原始byte[]数据,并且基于客户端/服务器,而不是简单的库调用,因此使用起来会非常尴尬。

用户回答回答于

你可以创建一个Dalvik堆的快照,然后你可以按照它们的大小或者它们的引用对象的大小(保留的大小)对对象列表进行排序。我完全用它来解决位图缓存泄漏问题。

扫码关注云+社区