Java BigDecimal l'utilisation de la mémoire?
Est-il une ligne directrice pour l'estimation de la quantité de mémoire consommée par un BigDecimal
?
La recherche de quelque chose de semblable à ces lignes directrices pour l'estimation de String
l'utilisation de la mémoire.
- La même avec une plus grande constante. Bien sûr, comme
String
, il est dépendant de l'implémentation. - Avez-vous lu celui-ci: javaworld.com/javaworld/javatips/jw-javatip130.html
Vous devez vous connecter pour publier un commentaire.
Si vous regardez les champs de la source de BigDecimal il y a:
Le commentaire pour stringCache est "Utilisé pour stocker les canonique représentation de chaîne, si calculé.", donc en supposant que vous ne faites pas appel à toString nous allons laisser cela comme zéro octets, donc au total il y a (8+4+4)=16 octets + BigInteger dans BigDecimal et 4+4+4+4+4=20 octets + mag pour BigInteger. Donc un total de 36 octets plus de l'ampleur. Aussi loin que je peux dire ampleur est toujours le nombre minimum de bits nécessaires pour représenter le plein entier, de sorte que pour un nombre n, il aura besoin de log2(n) bits, qui peut être converti à ints. Donc, en général, vous devriez être en utilisant environ:
(à noter qu'il ne comprend pas tout de l'autre descripteur d'objet de frais généraux comme votre exemple de lien pour les chaînes, mais elle devrait vous donner une bonne idée générale.)
Si vous plongez dans les entrailles de
BigDecimal
vous allez voir qu'il utilise une représentation compacte si le significande <=Long.MAX_VALUE
. Par conséquent, l'utilisation de la mémoire peut varier en fonction de la valeur réelle que vous représentez.