Wie viel Platz nutzt BigInteger?

8

Wie viele Bytes Speicher wird ein BigInteger-Objekt im Allgemeinen verwenden?

    
Nikunj Banka 08.03.2013, 18:56
quelle

4 Antworten

12

BigInteger verwendet intern int[] , um die großen Zahlen darzustellen, die Sie verwenden. Daher hängt es wirklich von der Größe der Nummer ab, die du darin speicherst . Der int[] wird größer, wenn die aktuelle Zahl nicht dynamisch passt.

Um die Anzahl der Bytes zu ermitteln, die Ihre BigInteger instance zur Zeit verwendet , können Sie die Schnittstelle Instrumentation verwenden, insbesondere getObjectSize(Object) .

%Vor%

Um sich zu überzeugen, werfen Sie einen Blick auf die Quellcode , wo es heißt:

%Vor%     
poitroae 08.03.2013, 19:00
quelle
5

Folgend dieser Beitrag:

%Vor%

Das sind insgesamt 20 Bytes + das Ganzzahl-Array. Ein Integer-Array der Länge N hat die Größe 4N + 24 (Array-Overhead + 4 Bytes / Integer).

Insgesamt ergibt das 4N + 44 Byte, abhängig davon, wie groß Ihre Nummer ist. Vergessen Sie nicht, dass der Verweis auf ein Objekt auch Speicher verwendet.

Edit: 16 zusätzliche Bytes als Objekt-Overhead, bringt es auf 4N + 60 Bytes. Hinzufügen von Padding zu diesem (jedes Objekt verwendet ein Vielfaches von 8 Bytes) erhalten wir zusätzliche 4 Bytes.

Dies führt zu 4N + 64 Bytes.

    
Jeroen Vannevel 08.03.2013 19:12
quelle
0

Die Größe des Java-Objekts hängt von seinen Feldern ab. Dies sind BigInteger-Felder

%Vor%

können wir die Größe einer BigInteger-Instanz als

berechnen %Vor%

Siehe Ссылка .

    
Evgeniy Dorofeev 08.03.2013 19:20
quelle
-3

Es kann Integer beliebiger Größe darstellen. Zugewiesener Speicher für Ihre Anwendung ist Limit.

    
Amandeep Jiddewar 08.03.2013 19:09
quelle

Tags und Links