[ARDUINO CRASH] After many command

Hello, i have strange problem.
I create webpage internal with butto ON / OFF

Works good, but after 4-5 times click on button webpage crashes.

I attach code

/*
Created by Rui Santos
Visit: https://randomnerdtutorials.com for more arduino projects

Arduino with Ethernet Shield
*/

// int pinDHT11 = 6;
//int SensoreLuce = 5; // pin per il fotoresistore
//int LuceLED = 9; // rele luce
//int Ventola = 8; // rele ventola
//int Irrigazione = 3;
//int Calore = 4;
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 150 }; // IP address in LAN – need to change according to your Network address
byte gateway[] = { 192, 168, 0, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port

String readString;
int ledPin = 9;
int ventolaPin = 8;
int calorePin = 4;
int pompaPin = 3;

void setup() {

pinMode(ledPin, OUTPUT); //pin selected to control
// Test LED
digitalWrite(ledPin, LOW); // set pin low
digitalWrite(ledPin, HIGH); // set pin high
delay(50);

pinMode(ventolaPin, OUTPUT);
digitalWrite(ventolaPin, LOW); // set pin low
delay(50);
digitalWrite(ventolaPin, HIGH); // set pin high

pinMode(calorePin, OUTPUT); //pin selected to control
// Test LED
digitalWrite(calorePin, LOW); // set pin high
delay(50);
digitalWrite(calorePin, HIGH ); // set pin low
pinMode(pompaPin, OUTPUT); //pin selected to control

// Test IRRIGAZIONE
digitalWrite(pompaPin, LOW ); // set pin high
delay(50);
digitalWrite(pompaPin, HIGH); // set pin low

//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
}

void loop() {
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();

//read char by char HTTP request
if (readString.length() < 100) {

//store characters to string
readString += c;
}

//if HTTP request has ended– 0x0D is Carriage Return \n ASCII
if (c == 0x0D) {
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();

client.println("");
client.println("");
client.println(" ARDUINO ETHERNET SHIELD");
client.println("");
client.println("");
client.println("


");
client.println("
");
client.println("
");
client.println("<H1 style="color:green;">ARDUINO ETHERNET SHIELD — LED ON/OFF FROM WEBPAGE");
client.println("
");
client.println("
");

client.println("

<a href="/?LEDON"">Turn On LED

"); client.println("

Turn Off LED

");

client.println("

<a href="/?VENTOLAON"">Turn On Ventola

"); client.println("

Turn Off Ventola

");

client.println("

<a href="/?CALOREON"">Turn On Calore

"); client.println("

Turn Off Calore

");

client.println("

<a href="/?POMPAON"">Turn On Pompa

"); client.println("

Turn Off Pompa

");

client.println("");
client.println("");

delay(10);
//stopping client
client.stop();

// control arduino pin
if (readString.indexOf("?LEDON") > -1) //checks for LEDON
{
digitalWrite(ledPin, LOW); // set pin high
}
else {
if (readString.indexOf("?LEDOFF") > -1) //checks for LEDOFF
{
digitalWrite(ledPin, HIGH); // set pin low
}
}
// PER LA VENTOLA

if (readString.indexOf("?VENTOLAON") > -1) //checks for LEDON
{
digitalWrite(ventolaPin, LOW); // set pin high
}
else {
if (readString.indexOf("?VENTOLAOFF") > -1) //checks for LEDOFF
{
digitalWrite(ventolaPin, HIGH); // set pin low
}
if (readString.indexOf("?CALOREON") > -1) //checks for LEDON
{
digitalWrite(calorePin, LOW); // set pin high
}
else {
if (readString.indexOf("?CALOREOFF") > -1) //checks for LEDOFF
{
digitalWrite(calorePin, HIGH); // set pin low
}
if (readString.indexOf("?POMPAON") > -1) //checks for LEDON
{
digitalWrite(pompaPin, LOW); // set pin high
}
else {
if (readString.indexOf("?POMPAOFF") > -1) //checks for LEDOFF
{
digitalWrite(pompaPin, HIGH); // set pin low
}
}

//clearing string for next read
readString = "";

}
}
}
}
}
}
}

Most probably you run out of memory. Don't use the String class (it fragments the RAM too fast) and learn to use the F() macro.