Usando timer e timerTask, está fazendo várias verificações, e com isso, o servidor está ficando cheio.
Como posso fazer para desalocar a memória preenchida?
private Timer timer;
private Date d;
private final SimpleDateFormat sdfHora;
private final SimpleDateFormat sdfData;
private long dataAtual;
private long dataComecaEnviar;
public AgendamentoClassificacao() {
this.timer = null;
this.d = new Date();
this.sdfHora = new SimpleDateFormat("HHmm");
this.sdfData = new SimpleDateFormat("yyyyMMdd");
this.dataAtual = 0;
this.dataComecaEnviar = 0;
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("==== SOFTWARE INICIALIZADO ====");
timer = new Timer ();
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 20);
c.set(Calendar.MINUTE, 00);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date horaAgendada = c.getTime();
long period = 86400000;
dataComecaEnviar = 20180614;
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
d = new Date();
if ((sdfHora.format(d).equals("2000")) && (Long.parseLong(sdfData.format(d)) >= dataComecaEnviar)){
enviaClassificacaoGeral();
}
}
}, horaAgendada, period);
}