Android is not hiding some amount of RAM from the user.
shows that it has only 150MB free of 256MB, and it should have 512MB.
That is quite a common thing among cheap Chinese devices, two scenarios spring to mind:
- The kernel is built with a memory model that is split up into two, half of it is occupied by the kernel, the other half is occupied by Android, otherwise known as a 2G VMSPLIT, 2Gb addressing space for kernel, 2Gb addressing space for Android and user apps.
- The chip-set controller for accessing the RAM is "locked down". There are ways of "unlocking" the chip-set controller but sadly, that information is very difficult to obtain. There is a tool available which, I must add, very difficult to use and is not exactly friendly either, PSAS IIRC or one of the variants of it.
I can cite one handset that has this problem - Zte Blade, there's two variants of it, Chinese variant (which has 512Mb with only 256Mb available, the rest locked out), and the European variant which indeed has 512Mb - albeit limited and depending on the region within Europe.
Unfortunately, for some obscure reason, those chip-sets used on the circuit board could be either refurbished with the remainder of the RAM "locked down" or is a cheap clone of the real thing.
There was various reports on Modaco about this in trying "to unlock" the remainder of the RAM in the Chinese (and some European) variants of the Zte Blade, but IIRC, it was not successful.
The only thing that can be done to compensate, is either, roll your own kernel using VMSPLIT 3G, and flash it or, do some searching on the internet to find out if anyone has it unlocked and what steps are necessary, IIRC the tool used was PSAS which actually can talk to the chip-set - have heard some hard-core hackers using it to modify and alter the handset in that fashion.
free -m
..