I am facing a low memory available problem in arduino. I am compiling a big sketch for arduino mega 2560. Analysing a .elf file, the avr-size tool gives: text data bss dec hex filename 68524 4392 2560 75476 126d4 C:\Users\LEAN... And the avr-nm ([avr-nm doc][1]) shows only variables with t, T, b, d and B. The following is how the command is executed (the output is being saved in a file called test.txt). avr-nm -a -td -C -l --size-sort -r x.elf >> test.txt Then, I perform a sum to confirm the avr-size result using this Python script: f = open("test.txt", "r") lines = f.readlines() f.close() su = 0 dsum = 0 bsum = 0 tsum = 0 gsum = 0 for line in lines: #print(line, end="") s = line.split() try: val = int(s[0]) su = su + val if(s[1].lower() == 'b'): bsum = bsum + val if(s[1].lower() == 'd'): print(line) dsum = dsum + val if(s[1].lower() == 't'): tsum = tsum + val if(s[1].lower() == 'g'): gsum = gsum + val except: print("ERR: ",s[0]) print("\n\nSIZE: ", su) print("SIZE d/D: ", dsum) print("SIZE b/B: ", bsum) print("SIZE t/T: ", tsum) print("SIZE g/G: ", gsum) and the sum result of each var type is: SIZE: 71015 SIZE d/D: 135 SIZE b/B: 2560 SIZE t/T: 68320 SIZE g/G: 0 The question: Here d/D sums is 135 bytes. So, why the data segment reported by avr-size is 4392 bytes? how to find out what is occupying this space? Best Regards. **EDIT** It must be a Joke! I have a lot of like this in the code: Serial.print("QTDE REG: "); Just changing for this: Serial.print(F("QTDE REG: ")); I have reduced by 10 the .data size! So, in this way ```Serial.print("QTDE REG: ");``` "QTDE REG: " is stored as a global variable?? I thought the compiler would save locally. **EDIT 2** I have an advance running ```avr-objdump -s -j .data x.elf``` as suggested by Edgar below. Now I see that all my string literals are in data! For example: ```C void myFunction(){ ... sprintf(buf, "{\"name\":\"Intervalo de Registros\",\"value\":\"%d\", \"unit\":\"C\"},", (int)settings.treg); ... } ``` ```avr-objdump -s -j .data x.elf``` shows: ``` 800660 2c007b22 6e616d65 223a2249 6e746572 ,.{"name":"Inter 800670 76616c6f 20646520 52656769 7374726f valo de Registro 800680 73222c22 76616c75 65223a22 2564222c s","value":"%d", 800690 2022756e 6974223a 2243227d 2c007b22 "unit":"C"},.{" ``` [1]: https://linux.die.net/man/1/avr-nm