Arduino clones with more RAM than Uno?

Also keep in mind that C strings by default on AVR will copied to RAM as well.
So things like:

char *var = "HELLO";
serial.print("HELLO");

will eat up 6 bytes of RAM.

Build your code with the verbose option so you can locate the .elf file.
Then run nm on the .elf to see your symbols to be able to identify
what is using your RAM.

See the nm man page for more details but
here is a sample useful command to get you started:
avr-nm -n -C -S *.elf > nm.out

In the nm output, the symbols with "B" near the bottom are the ones using up bss (RAM)
(This won't show the literal strings).

You can also get useful information from the objdump command.

--- bill