Same string getting rewriten every second, RAM usage issue?

In my experience String is a RAM eater. This has ceased to be a problem since I started using strings instead of Strings.

That confused me, too, at first.

String is the Arduino-only library that simplifies character strings for new users.
When we say 'string', we mean C++ character strings.

Here is an explanation of what Strings do to RAM.

May I suggest that your loop() function is a mess.
It is a good practice to not do everything in the loop() function. Break it into a number of functions that you call from loop. In the long run it makes your code easier to read, modify or organize. (Especially if you need to revisit the sketch a year later).

Instead of

void loop(){
  if(test)
    {
       do lot's of stuff
    }
  if(test2)
    {
       do lot's of other stuff
    }
}

many dozens of times,
put the 'do stuff' code into separate functions:

void loop(){
  if(test) do lot's of stuff;
  if(test2) do lot's of other stuff
}