请问在Android的Java虚拟机中,一个引用所占用的大小是多少?
更多信息:
我的意思是,如果我们有
String str = "Watever";
我需要的是str
所取得的内容,而不是"Watever"
。-- "Watever"
是指针(或引用)所指向的位置中保存的内容,而这个指针(或引用)是由str
所持有的。
另外,如果我们有
String str = null;
它消耗多少内存?和其他str
一样吗?
现在,如果我们有:
Object obj[] = new object[2];
obj
消耗多少,obj[1]
和obj[2]
各自消耗多少?
问题的原因如下:(以防有人能推荐一些东西)。
我正在开发一个管理从互联网下载的许多图片的应用程序。我开始将这些图片存储在一个“库”中(由图片列表组成)。
当在图库中显示这些图片时,我过去会在列表中搜索图片(速度慢),如果图片不在那里,我就会显示一个临时下载图像,直到图片被下载完毕。
由于这发生在UI线程上,应用程序变得非常缓慢,所以我考虑在银行中实现哈希表,而不是我拥有的列表。
正如我之前解释的那样,这个搜索发生在UI线程上(我无法改变这一点)。因此,如果碰撞开始减慢线程,碰撞可能会成为一个问题。
我已经读到,“为了平衡时间和空间效率,哈希表应该占用约一半的空间”,但这会使碰撞发生一半的时间(对UI线程来说不实用)。这让我想到要有一个非常长的哈希表(与保存的图片数量相比),并使用更多的RAM(VMHeap空闲较少)。
在确定哈希表的大小之前,我想知道它将消耗多少内存,以免夸大其词。
我知道哈希表的大小可能非常小,与图片可能消耗的内存相比,但我想确保我不会消耗比必要更多的内存。
在提出这个问题之前,我在其他地方进行了搜索,其中包括:
(是的,我知道其中两个地方相互矛盾,这也是提问的原因之一)。