【发布时间】:2011-04-30 04:10:50
【问题描述】:
Android 的 Java VM 中的引用消耗的大小是多少?
更多信息:
我的意思是,如果我们有
String str = "Watever";
我需要str 需要的东西,而不是"Watever"。 -- "Watever" 是保存在str 所持有的指针(或引用)所指向的位置的内容。
如果我们有
String str = null;
它消耗多少内存?和其他str一样吗?
现在,如果我们有:
Object obj[] = new object[2];
obj 消耗多少,obj[1] 和obj[2] 消耗多少?
问题的原因如下:(以防有人可以推荐一些东西)。
我正在开发一个应用程序来管理从互联网下载的许多图片。 我开始将这些图片存储在“银行”中(由图片列表组成)。
当在图库中显示这些图片时,我曾经在列表中搜索图片 (SLOW),然后,如果图片不存在,我会显示临时下载图片,直到图片被下载。
由于发生在 UI Thread 上,应用程序变得非常慢,所以我想在银行上实现一个哈希表,而不是我的列表。
正如我之前解释的,此搜索发生在 UI 线程中(我无法更改)。因此,如果冲突开始减慢线程速度,就会成为问题。
我读过“为了平衡时间和空间效率,哈希表应该是半满的”,但这会导致一半时间发生冲突(对于 UI 线程不实用)。这让我想到了拥有一个非常长的哈希表(与保存的图片数量相比)并使用更多的 RAM(拥有更少的空闲 VMHeap)。
在确定哈希表的大小之前,我想知道它会消耗多少内存,以免被夸大。
我知道哈希表的大小与图片可能消耗的内存相比可能非常小,但我想确保我没有消耗过多的内存。
在问这个问题之前,我搜索了其他地方,在
How big is an object reference in Java and precisely what information does it contain?
(是的,我知道其中两个地方相互矛盾,这是问题的部分原因)。
【问题讨论】:
标签: java android pointers reference size