Memory

Basics

Bit - 0 or 1

Byte - 8 bits

Mega Byte - 1 million or 2202^{20} bytes

Giga Byte - 1 Billion or 2302^{30} bytes

Old Machines, we used to assume 32 bits with 4 byte pointers

Modern Machines, we used to assume 64 bits with 8 byte pointers

  • Can address more memory

  • Pointers uses more memory

Typical memory usage of primitive types and arrays

TypeBytes

boolean

1

byte

1

char

2

int

4

float

4

long

8

double

8

For one Dimensional arrays ( N )

Note: Over head of 24 bytes

TypeBytes

char[]

2N + 24

int[]

4N + 24

double[]

8N + 24

For two Dimensional arrays ( M * N )

TypeBytes

char[][]

2MN + 24

int[][]

4MN + 24

double[][]

8MN + 24

Java Objects

Object overhead - 16 bytes

Object Reference - 8 bytes

Padding - Each object uses a multiple of 8 bytes

/**
* Memory Calculation
* Object Overhead + day + month + year + padding 
* 16 + 4 + 4 + 4 + 4 = 32 bytes
*/
public class date {
  private int day;      // 4 bytes
  private int month;    // 4 bytes
  private int year;     // 4 bytes 
} 

Last updated