Try running (if you're on a UNIX OS):
arm-none-eabi-nm -S --size-sort [projectfile].elf | grep $200
This prints all names in the project with it's size (-S) , and sorts them (--size-sort). Then grep $200 filters all lines that start with "200", which in my EFM32G project is the prefix of the SRAM memory (20000000). This for me then directly prints:
200013e8 0000001c B si7021
20001408 0000002c B stream1
200000cc 00000040 B comms
20001394 00000054 B sensors
20000024 00000060 d impure_data
200014e0 000000d0 B os
200031d0 00000400 ? stack
20000b6c 00000828 B sensorData
2000012c 00000a40 B rfModem
200025d0 00000c00 ? heap
200015b4 00001000 B osHeap
With address (hex), size (hex), type of allocation (see man nm, B=unitialized, d=initialized, ?=unknown due to sections)
If you're not on Windows but do use the GNU toolchain, you can ofcourse run the nm tool manually and filter the results via a spreadsheet tool (export to CSV, import with spaces as seperator, and filter).
---
I suspect probably that you're using either 2K stack or heap in your program.
Note that it's never wise to run a program to 100% RAM. The "used RAM" given of the size tool is not including the stack; which must have sufficient room in order to grow and shrink.
If you really need the 3Kbyte buffer plus 256x4 byte second buffer, it sounds like you better get a 8KB RAM part, or perhaps re-use the serial buffer to also store the binary integers (but IMO more trouble than it's worth).