You do not have enough memory, you work on a 32-bit system and, thus, run out of address space, you can reasonably expect that you can allocate 4Gb on the 32nd system, because:
2^32 = 4Gb
However, on most operating systems, at least 50% of the available address space is actually reserved for use by the kernel, so you can only have half.
On Linux, you can use significantly more than 4 GB in 32-bit mode, switching to using the PAE kernel . Many Linux distributions provide the PAE kernel as a package if you need it.
EDIT : as Dietrich notes: PAE allows you to use more memory, but it only gives you 4 GB of address space. Thus, with 16 gigabytes you can have 8 programs with 2 gigabytes each, but you still cannot have one program with more than 2 ish bends
source share