Problemas com memory leak

0 respostas
Rafael_Costa_Teixeir

Ola pessoal do Guj ,

Tudo Bem !!!

Sou iniciante em Java e estou fazendo um pequeno programa que pretendo deixar rodando no servidor , mas estou tendo problemas com memory leak.

O programa tem uma Thread que fica monitorando em um loop while o tamanho de 2 arquivos de logs (obtem o tamanho do arquivo e depois obtem novamente o tamanho do mesmo arquivo se for diferente esqueva em uma variavel string).

No main do programa ele fica aguardando alguma por conexões e apos receber conexão com o cliente cria uma thread para tratar esse cliente que ira ler
o valor da variavel string da outra Thread para saber se houve ou não alteração dos arquivos.

O teste que eu realizei foi assim:

Startei o programa o qual starta a Thread que fica em loop infinito monitorando os arquivos , em quanto isso o main fica aguardando o cliente.
Mesmo sem conectar nenhum o cliente o programa vai consumindo cada vez mais e mais memoria do sistema.

Segue abaixo o codigo da Thread que monitora os arquivos:

import java.io.*;

public class MonitAuto implements Runnable
{

String mensagem = "";
	public synchronized String getMsg()
	{
	String msg;
	msg = mensagem;
	mensagem = "";
	
 	return msg;
	}
	public void run()
	{
	// String mensagem = "";
	long varOs1,varOs2;
	File fos1 = new File("putty_os1.log");
	File fos2 = new File("putty_os2.log");
	// Connect net = new Connect();
	varOs1 = fos1.length();
	varOs2 = fos2.length();
	
		while(true)
		{
			if(varOs1 != fos1.length() )
			{
			varOs1 = fos1.length();
			System.out.println("Diferente1");
			// net.sendMsgNet("<Os1>");
			mensagem = "<Os1>";

			}		
		
			if(varOs2 != fos2.length() )
			{
			varOs2 = fos2.length();
			System.out.println("Diferente2");
			//net.sendMsgNet("<Os2>");
			mensagem = "<Os2>";

			}
		try{		
		Thread.sleep(1000);
		// System.gc();
		}catch (InterruptedException e) 
		{		
		System.out.println(e);
		}
	
		}

	
	}
}

Não sei o que esta errado.

Criado 30 de julho de 2010
Respostas 0
Participantes 1