32-bit vs 64-bit
32-bit / 64-bit is about the size of object references, not the size of numbers.
- 32-bit: references are 4 bytes, max memory 2^32 bytes (4GiB).
- 64-bit: references are 8 bytes, max memory 2^64 bytes (16 EiB) of memory.
Not all 64-bit instruction sets support full 64-bit virtual memory addresses: x86-64 and ARMv8 support only 48 bits of virtual address, with the remaining 16 bits of the virtual address required to be all 0's or all 1's, and several 64-bit instruction sets support fewer than 64 bits of physical memory address.
- Intel / AMD: x86-64, a.k.a. amd64 or x64.
- ARM: aarch64
- iOS: Support AArch64 processors only, since iOS 11 (2017)
- macOS: 64-bit only after 10.15 (2019)
- Android: 64-bit only after Android 12 (2021)
- Windows: 64-bit only since Windows 11 (2021)
- Raspberry Pi OS (64-bit) exits beta in 2022.
- All Cortex-A processors will be 64-bit only from 2023.
- Many Linux distros are 64-bit only. E.g. Ubuntu.