BigDecimal
tarafından tüketilen bellek miktarını tahmin etmek için bir yönerge var mı?Java BigDecimal bellek kullanımı?
String
bellek kullanımının tahmin edilmesi için bu guidelines benzeri bir şey mi arıyorsunuz.
BigDecimal
tarafından tüketilen bellek miktarını tahmin etmek için bir yönerge var mı?Java BigDecimal bellek kullanımı?
String
bellek kullanımının tahmin edilmesi için bu guidelines benzeri bir şey mi arıyorsunuz.
vardır:
stringCache için comment "bilgisayarlı varsa, kurallı dize gösterimini depolamak için kullanılır." dır, bu nedenle don' varsayarak
BigDecimal:
long intCompact +8 bytes
int precision +4 bytes
int scale +4 bytes
String stringCache +?
BigInteger intVal +?
BigInteger:
int bitCount +4 bytes
int bitLength +4 bytes
int firstNonzeroIntNum +4 bytes
int lowestSetBit +4 bytes
int signum +4 bytes
int[] mag +?
t toString'i sıfır bayt olarak bırakacağız, böylece toplamda BigDecimal'de (8 + 4 + 4) = 16 byte + BigInteger ve BigInteger için 4 + 4 + 4 + 4 + 4 = 20 bytes + mag. Yani toplam 36 bayt artı büyüklüğü. Büyüklüğü her zaman tam tamsayıyı temsil etmek için gereken minimum bit sayısı olduğunu söyleyebildiğim için, bir n sayısı için, intrlere dönüştürülebilen log2 (n) bitlerine ihtiyaç duyacaktır. Yani genel olarak yaklaşık kullanarak edilmelidir:
36 + Ceiling(log2(n)/8.0) bytes
(bu ama size iyi bir genel bir fikir verecektir gelmez dizeleri için örnek bağlantı olarak diğer nesne tanımlayıcısı yükü herhangi içermez unutmayın.)
'stringCache' ve 'intVal' öğelerinin referans işaretçilerine sahip olacağını unutmayın (jvm impl'ye bağımlı 4 veya 8 bayt). Ayrıca min 12byte nesne üstbilgisi ek yükünü ('BigInteger' ve 'BigDecimal', int []) ve son olarak 8byte tüm nesne boyutlarını hizalayın (yuvarlak). –
s/Cieling/Tavan / – thisfred
BigDecimal
iç yapısını içine kazarsanız, anlamlılık < = Long.MAX_VALUE
ise kompakt bir gösterim kullandığını görürsünüz. Bu nedenle, bellek kullanımı, temsil ettiğiniz gerçek değerlere bağlı olarak değişebilir. Eğer BigDecimal için kaynağındaki alanlara bakarsak
Kompakt sunum nedir? –
Aynı şey daha büyük bir sabit ile aynı. Elbette, 'String' gibi, uygulamaya bağımlıdır. –
Bunu okudu mu: http://www.javaworld.com/javaworld/javatips/jw-javatip130.html – PeterMmm