众所周知,Java 5引入了Instrumentation的功能,可轻松获得对象的大小。Android和Dalvik上有这种方法吗?
该java.lang.instrument
软件包在Android上不可用。
对于它的价值,我查看了Dalvik
VM源代码,但找不到任何稳定的API来获取对象的大小。如果您想自己看一下,对象的大小存储在中ClassObject::objectSize : size_t
,请参见 dalvik / vm / oo / Object.h 。
但是,有 内部
API可以获取对象的大小。DDMS使用它来报告有关对象大小的详细信息。但是,由于API是内部的,因此很可能会在不同版本的Android之间进行更改。另外,该API会发送原始byte[]
数据,并且基于客户端/服务器,而不是简单的库调用,因此使用起来非常尴尬。如果你想看看,开始dvmAllocObject()
在
达尔维克/ VM /分配/ Alloc.cpp 和dvmTrackAllocation()
电话。
综上所述:遗憾的是,没有任何易于使用的稳定API可以在Dalvik VM中获得对象的大小。
问题内容: 我有一个AJAX请求返回的json对象,而我遇到了一些麻烦,因为它一直在返回。只想知道我是否使用正确: 它们都是有效对象,即使它们都返回。 更新: 返回了JSON对象的示例: 问题答案: 你可以用这样的东西
问题内容: 我想获取上传图片的大小以控制它是否大于最大文件上传限制。我尝试了以下操作: 它印0有我在哪里做错了?我应该从它的临时路径中找到该图像的大小吗?难道没有像Python 那样的PHP 吗? 问题答案: 这里需要注意几件事-content_length属性将是浏览器报告的文件上载的内容长度,但是不幸的是,正如docs和source中指出的那样,许多浏览器没有发送此内容。 至于你的TypeEr
问题内容: 我想控制上传图片的大小,如果它大于最大文件上传限制。我尝试了这个: 它印了。我究竟做错了什么?我应该从它的临时路径中找到该图像的大小吗?有没有类似PHP的Python? 问题答案: 这里需要注意几件事- content_length属性将是浏览器报告的文件上载的内容长度,但是不幸的是,正如docs和source中指出的那样,许多浏览器没有发送此长度。 至于您的TypeError,接下来
问题内容: 长话短说,我想针对该类测试android.os.Bundle类的克隆实现,以查看哪种更好。我已经知道我的版本很可能会更糟糕,但我想知道 有多少 糟糕。是否有适用于Android的基准测试工具,可以用来查看哪个对象的内存更大和/或需要更多的处理时间来存储/检索值? TL; DR: 我查看了android.os.Bundle类的源代码,但我不喜欢它存储和返回对象的方式。它只是将它们存储在中
问题内容: 我是JSON的新手。因此,如果这是一个非常基本的疑问,请不要责骂我。我有一个JSON对象参考,我想获取Key(对象只有一个“键值对”)。如何在Java中获得它? 问题答案: 您可以用来获取所有密钥。然后,您可以遍历密钥以从中获得第一个密钥,例如: