2010-02-04 8 views
1

Quelle est la taille (en octets) de l'objet Hashtable dans J2ME? Je veux dire quel est le coût d'utilisation d'un Hashtable?Quelle est la taille d'un objet Hashtable vide?

+0

tête de mémoire est une chose. Sûrement, l'utilisation du processeur est plus importante pour Hashtable. La fréquence de rehash dépend de la façon dont on utilise la table, cependant. –

Répondre

0

Une hashtable est de 24 octets pour l'objet de base + 2 ints (4 octets chacun) pour les _numberOfKeys et le _threshold. Les variables _hash, _key et _value (hashtable interne) seront déterminées par la capacité de la hashtable et la taille des objets dans la hashtable. La capacité est définie sur 11 si vous ne la transmettez pas dans le constructeur et que la table de hachage possède une logique permettant d'augmenter la capacité si davantage est requise.

Le _hash est un tableau de ints (les hashs) et est donc égale à la capacité Hashtable (avis: capacitépasnombre de touches) * 4 octets. Les _key et _value sont des tableaux de Type d'objet, donc même s'ils sont tous NULL, ils prennent les 4 octets pour les pointeurs vides.

J'espère que cela aidera n'importe qui!

+0

Évidemment, cela dépend de qui a écrit la classe Hashtable.java dans l'implémentation J2ME sur votre téléphone. Je suppose que cette réponse fait référence à la version open source de Sun Ltd PhoneME. –

+0

Vous avez raison, je devrais inclure le téléphone pour lequel je vous écris, qui est une mûre. Je crois que la classe Hashtable a été implémentée par RIM. – Tamar

2

Pour une table de hachage vide, cela varie probablement beaucoup selon l'appareil.

Vous pouvez obtenir une mesure approximative vous comme suit:

Runtime rt = Runtime.getRuntime(); 
long freeMem = rt.freeMemory(); 
Hashtable ht = new Hashtable(); 
long sizeofHashtable = freeMem - rt.freeMemory();