ESP8266 wifi module AP unstable

I am using ESP8266 module as access point. The AP dies after an hour or so. My code for access point is as below:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <WiFiUdp.h>

//These are the avariables you can change for your project. For example, change the SSID (network ID), change the ports on both machines.
//The most useful one is the LOOP_DELAY which changes how quicly it refreshes. set to 100ms be default.
char ssid[] = "ESPAP";      
char password[] = "mPass@54321";  //Set the AP's password
unsigned int localPort = 2390;        // local port to listen on
#define LOOP_DELAY    10             //how fast we check for new data
#define ARRAYSIZE     255             //size of message array (255bytes)
#define BAUD_RATE     115200          //serial comunication speed
//global variables
IPAddress remoteIp;
int remoteUDPPort;
char packetBuffer[ARRAYSIZE]; //buffer to hold incoming packet
int arraySize = ARRAYSIZE;
char inData[ARRAYSIZE]; // Allocate some space for the string
char inChar; // Where to store the character read
byte aindex = 0; // Index into array; where to store the character
boolean dataToSend = false;
WiFiUDP Udp;
void setup()
{
  delay(100);
  Serial.begin(BAUD_RATE);
  /* You can remove the password parameter if you want the AP to be open. */
  WiFi.softAP(ssid, password);    //Start AP
  // IPAddress myIP = WiFi.softAPIP(); if ever in doubt on this devices IP address you can get it here. Should be 192.168.4.1
  Udp.begin(localPort);
}
void loop() {
 while(Serial.available() > 0) //check for something to read from serial port
  {
      if(aindex < (arraySize-1)) // One less than the size of the array
      {
          inChar = Serial.read();   // Read a character
          inData[aindex] = inChar;  // Store it
          aindex++;                 // Increment where to write next
          inData[aindex] = '\0';    // Null terminate the string
      }
      dataToSend = true;
       }
  //check for incoming data via UDP
  int packetSize = Udp.parsePacket();
  if (packetSize)
  {
    remoteIp = Udp.remoteIP();
    remoteUDPPort = Udp.remotePort();
    int len = Udp.read(packetBuffer, 255);  //read in the packet
    if (len > 0)
    {
      packetBuffer[len] = 0;
    }
     Serial.println(packetBuffer);
  }
  // send UDP Data - this sends data to the last device it receives data from. For a one to one link this is fine. If there are multiple clients then this may need to be adjusted to store and send to all clients.
  if(dataToSend)
  {
    if(Udp.beginPacket(remoteIp, remoteUDPPort))
    {
      Udp.write(inData);
      Udp.endPacket();
      //Serial.println(inData); //Uncomment this line for a local echo of the data sent
      }
    else
    {
      Serial.println("No connection");
    }
    dataToSend = false; //set the flag to false, ie only send when you need to.
    for (aindex=0; aindex < arraySize; aindex++)  //wipe the array
    {
       inData[aindex] = '\0'; // Null terminate the string
    }
    aindex = 0; //reset the index
  }
}

Please suggest any modifications to keep the AP live. Thanks a lot

try WiFi.setSleepMode(WIFI_NONE_SLEEP);