Quote Originally Posted by SaffronPlatypus View Post
There will be an update soon. The phone currently cannot use all the RAM it has due to an older linux limitation:

QUOTE(Brian Swetland (google) over @ xda)
Roughly 220MB is available to userspace in the shipping build (ERD79).

Quite a lot of memory is dedicated to the radio firmware (41MB), dsp firmware (32MB), display surfaces (32MB), gpu (3MB), camera (8MB), a/v buffers (41MB), and dsp buffers. Much of this needs to be set aside for these specific tasks due to hardware requirements of very large physically contiguous buffers which can be difficult or impossible to obtain after boot once the physical memory space gets fragmented.

The big limitation though is that the Linux kernel needs to do a 1:1 physical:virtual map of general purpose memory used by the kernel and userspace (which excludes the special purpose stuff described above). This eats into the available kernel virtual address space, which is also needed for cross process shared memory used by the binder, etc. Run out of virtual memory and things get unhappy.

In 2.6.32, HIGHMEM support for ARM will allow us to avoid this requirement for a 1:1 mapping which will allow us to increase memory available to userspace without running the system out of virtual memory adddress space.

The new fix is supposed to come very soon to fix this, and will probably address other issues. The Nexus One should become notably faster with large-memory applications at that time as well. ...or possibly buggy, since this is a pretty big change. The kernel is already available and will boot, though causes light sensor issues apparently.

Here's a link to another forum thread with detailed info:
Available Memory on Nexus One - Android @ MoDaCo

Great info! Thanks for the post!