Skip to content

Memory usage for a data structure

Hvor mange MB fylder en liste med X elementer af denne datatype i hukommelsen (uden sprog-overhead)?

Answer: Grundlæggende datatypers størrelse i hukommelsen er defineret af sprogets specifikation eller af standarder som IEEE 754 for flydende tal. Ved at gange antal elementer med bytes pr. element får man et overslag over den rå hukommelse, en simpel liste eller et array optager — nyttigt når man skal vurdere, om en datastruktur kan holdes i RAM, eller om den kræver strømmet/disk-baseret behandling.

Formula

samlet hukommelse (bytes) = antal elementer × bytes pr. element

Eksempel: 1.000 elementer × 8 byte (double) = 8.000 bytes = 0,008 MB

Symbols and units in the formula
SymbolMeaningUnit
antal_elementerAntal elementerstk.
byte_pr_elementDatatype—
=Samlet hukommelsesforbrugMB
=Samlet hukommelsesforbrug (bytes)bytes

Validity and source

Source
IEEE 754 (flydende decimal-standard) + almindelige programmeringssprogs heltalsstørrelser

Does not apply when

  • Reelt hukommelsesforbrug i høj-niveau-sprog (fx Python- eller Java-objekter) er ofte betydeligt højere pga. objekt-headers og garbage collector-overhead — beregningen viser kun den rå datastørrelse.

Worked example

The calculator's own default values inserted. The figures are calculated with exactly the formula the tool uses.

Substituted

  • Antal elementer1,000 stk.
  • Datatype8

Giver

  • Samlet hukommelsesforbrug0.008 MB
  • Samlet hukommelsesforbrug (bytes)8,000 bytes

The calculator itself is locked

Create a free user account to unlock all articles, calculators, templates and range — and get access to quizzes and classes. It takes less than a minute: name, email and a password. No payment card.

Want to try something first? See what you can use without an account — the junior zone, the encyclopedia, the videos and more.

Sådan bruger du den

Når et script eller en tjeneste skal holde store datamængder i RAM, fx loglinjer eller sensormålinger, skal du vide om det kan være der. Beregneren regner den rå hukommelse ud fra antal elementer og datatype.

Step by step

  1. Tæl elementerne: rækker, målinger eller tegn.
  2. Find datatypens størrelse: 1, 2, 4 eller 8 byte.
  3. Gang de to tal. Det er den rå hukommelse i byte.
  4. Læg sprogets overhead til. I Python eller Java kan objekter fylde mange gange mere.

Typical errors

  • At regne Python-lister som rå data. Et Python-tal er et objekt på ca. 28 byte plus en reference på 8.
  • At forveksle MB (1.000.000 byte) og MiB (1.048.576 byte).
  • At glemme at strenge i UTF-8 fylder 1-4 byte pr. tegn, ikke altid 1.

Examples from everyday life

Måledata som double

Et overvågningsscript gemmer 1 million temperaturmålinger fra et serverrum som 64-bit tal.

Antal elementer
1,000,000 pcs.
Datatype
64-bit heltal / double (8 byte, IEEE 754 double precision)

It means: De rå data fylder 8 MB (8,000,000 bytes). Det er småt i RAM.

Sensorlog med 32-bit heltal

En IoT-gateway samler 10 millioner målinger som 32-bit heltal, før de sendes videre.

Antal elementer
10,000,000 pcs.
Datatype
32-bit heltal / float (4 byte, IEEE 754 single precision)

It means: Det fylder 40 MB. Gatewayen har 512 MB, så det kan være der, men ikke mange gange.

Flag for 100 millioner poster

Et oprydningsjob skal markere 100 millioner poster som behandlet eller ej.

Antal elementer
100,000,000 pcs.
Datatype
byte / bool (1 byte)

It means: Som byte fylder det 100 MB. Som bit-array ville det kun være en ottendedel.

Rule of thumb

1 million double = 8 MB. 1 million int32 = 4 MB.

How to check the answer

Mål med sys.getsizeof i Python, sizeof i C eller hukommelsesprofileren i dit miljø.