Vazamento de memória

1 resposta
B

Galera,

to com dúvida de como funciona um vazamento de memória…
Li o artigo aqui do GUJ mas ainda assim fiquei um pouco na dúvida.

Hoje utilizo um conjunto de classes em meus aplicativos e estou na dúvida se posso estar ferrando com a memória.

Vejam as classes abaixo:

ClasseMaster: Nesta classe contem os métodos que faço acesso ao banco.

ClasseBase: Aí na aplicação tenho uma classe chamada ClasseBase que herda a ClasseMaster e basicamente serve apenas para carregar os arquivos de configuração referente à aplicação.
Classes da aplicação: todas herdam a ClasseBase

Bom, na prática fica assim:

ClasseMaster:

public class ClasseMaster {	
	protected String _NomeTabela = null;
	protected String _CampoID = null;
	protected GenericCollection genericCollection = null;;
	protected Datasource oDs;
	protected Class c = null;

	protected void CarregaDs(){
		String ofPadrao =  "/biancuzzi/utils/db/config.properties";
		InputStream Fi = null;
		Fi = getClass().getResourceAsStream(oF);
		
		if(Fi == null){
			Fi = getClass().getResourceAsStream(ofPadrao); 
		}
	
		try{
			if(Fi == null){
				throw new Exception("Arquivo de configuracao nao informado");
			}
			Properties oP = new Properties();
			oP.load(Fi);
			Fi.close();		
                       
                       //Obtendo o codigo do cliente
			if(oP.getProperty("Sys.Cod") != null){
				CodCli = Integer.parseInt(oP.getProperty("Sys.Cod"));
			}


                        //carregando classe de acesso ao banco
			oDs = new Datasource(oP);
			
			genericCollection = new GenericCollection();
		}catch (Exception e) {
			//System.out.print(e.getMessage());
			e.printStackTrace();
			
		}

	}



	public class GenericCollection {
		private ResultSet RsBase;
		
		public void setRsBase(ResultSet rsBase) {
			RsBase = rsBase;
		}
		


		public String toXML() throws SQLException{
			return getXmlByRs(RsBase);
		}
		public LinkedList toLinkedList() throws Exception{
			validaObjetoVO();
			return setVO(c, RsBase);
		}
		public ResultSet toResultSet(){
			return RsBase;
		}
	}

}

ClasseBase
Todas as aplicações que crio tem na raiz uma classe dessa:

public class ClasseBase extends ClasseMaster {
	public ClasseBase(){
		oF =  "/br/com/lexxis/condom/config.properties";
		CarregaDs();
	}
}

E aqui um exemplo da classe da aplicação em si:

public class CotacaoFornecedores extends ClasseBase {
	public static Logger logger = Logger.getLogger(CotacaoFornecedores.class.getName());
	
	public CotacaoFornecedores() {
		_NomeTabela = "CotacaoFornecedores";
		_CampoID = "IdCotacaoFornecedor";
		c = CotacaoFornecedorVO.class;
	}
	
	public GenericCollection getForncedoresCotacao(int IdCotacao) throws Exception{
		genericCollection.setRsBase(oDs.getAllFields(_NomeTabela, "IdCotacao=" + IdCotacao));
		return genericCollection;
	}
}

O GenericCollection é uma função que criei para não ter que ficar criando métodos repetitivos para retornar a mesma coleção de dados em formatos difrentes.

A dúvida está neste “genericCollection” que utilizo. Vejam que para não ter que ficar criando um para cada método, crio um na ClasseMaster e utilizo o mesmo em todos os métodos.
Isto está correto?

Bom…
se ficou alguma dúvida me avisem.

1 Resposta

B

HUmmm
E aí? Ninguém pra me dar uma luz? :oops: :cry:

Criado 29 de novembro de 2012
Ultima resposta 29 de nov. de 2012
Respostas 1
Participantes 1