Why does my 32bit ubuntu see 8GB of RAM?

Solution 1:

Due to PAE: http://en.wikipedia.org/wiki/Physical_Address_Extension

AFAIK Windows client versions, while they support PAE, don't support physical addresses past the 4 GB mark (apparently due to various buggy drivers). Windows server, and Linux, do not have this restriction.

Solution 2:

Ubuntu upon detecting 4GB+ RAM automatically uses kernel with PAE extension, which supports up to 64GB RAM.

Related question on Ask Ubuntu: https://askubuntu.com/questions/43422/8-gb-ram-on-64-bit-processor-using-32-bit-ubuntu

Solution 3:

It may be that the OS can detect your RAM but not address it. PAE is not, as far as I know, enabled by default.

Try

# free -m

The "total" stat should be around 8000, not 2700.

If it's 2700, you still can't address that RAM.

If you want to enable PAE, you'll have to recompile the kernel

You might find it easier to just back up your home folder and install the 64-bit version of the OS. I use the 64-bit version for everyday Java development purposes and so far have yet to find any serious problems, but I do need the extra RAM.