【发布时间】:2012-10-25 14:04:59
【问题描述】:
Java 虚拟机也可以为short 字段使用int 大小的宽度(这取决于它们的内部实现)。只有数组 (short[]) 是例外,始终保证它们在内部占用的空间也比 int[] 少)。 Dalvik 呢?
例如我有一个包含 50 个 short 类型字段的类。有时在我的应用程序中,存在 10000 个此类。这意味着short 字段应该使用 1MB 的内存,但 如果 Dalvik 在内部使用 4 字节的 short 值,那么这将是 2MB 的内存使用。
我应该期望 Dalvik 使用多少内存? (这是指它的内部内存使用,我知道它可能不会反映在系统内存使用中,例如因为 Dalvik 已经从系统中保留了更多的内存。)
【问题讨论】:
-
致为我的帖子准备(格式)编辑的用户:谢谢。不幸的是,系统没有让我接受它,它说“编辑已被拒绝”。据我所知,我尝试自己应用您的编辑。
-
“Java 虚拟机也以对短字段使用 int 大小的宽度而闻名”你能用任何参考来支持这个陈述吗?
-
@Nambari:它没有。它只是引用了 Java 规范。事实上,对于任何应用程序代码,'short' 保证 appear 和 act 作为 2 个字节。我想知道 Dalvik 的内部实现,以及我是否使用 10000 个具有 50 个短字段的类,或者我在每个类中都使用一个 short[] 是否会影响内存使用。跨度>
-
@JesusFreke:是的,在其中一个链接的主题中,OP 也进行了测试,表明他仅在
short[]的情况下保存内存,而不是在个人 @987654329 的情况下@字段。正如 pst 上面指出的,Dalvik 的工作方式可能有所不同。在几个方面,Dalvik 的工作方式确实与 JVM 不同(因为它是针对移动设备优化的)。在这种情况下,可以合理地假设它以与 JVM 相同的方式处理short[](如果short[]使用更多内存,由于各种原因,这是不可接受的)。我的问题正好相反:Dalvik 如何在内部存储 individualshort字段? -
@pst 和 Thomas Calc:问题 8855754 专门针对 Android。您可能已经注意到标准 JVM 不能在 Android 上运行。因此,假设他在 dalvik 上进行了测试(可能)是安全的 :)