Consumo de memoria em java

6 respostas
java
A
Pessoal tenho uma aplicação em javaSE com 20 formularios onde neles trabalho da seguinte forma:

no inicio do form no inicio dos componentes no NetBeans eu abro a minha conexao com banco ex:

inicio dos componentes do form:

conectaBanco conexao = new conectaBanco();

conexao.conecta();

.

.

(códigos e ações de botoes e afins)

.

conexao.desconecta();

sendo que o metodo de conecta() foi criado na classe de conexao assim como o método desconecta mas como no exemplo acima eu inicio automatico a abertura da conexao do banco e o desconecta() eu chamo a clicar no botão “sair” minha duvida é : apos muitos cadastros em um dia meu sistema vai ficar lento???

6 Respostas

H

Eu recomendo fazer conexões simultâneas e após terminar seu código fechar a conexão, por exemplo.

Vou cadastrar um novo usuário.

Connection c = connection.openNewConnection();

Cadastro realizado;

connection.closeConnection©;

A

Mto legal mas oque aconteceria com minha memória se eu implantar meu sistema do jeito que está ou se eu se mudasse assim:

tipo no botão salvar …dentro do ActionPerformard(){

abroconexao…

codigos…

fechoConexao…
}
seria uma boa auternativa??

H

Ainda recomendo várias conexões e fechando elas assim que terminar.

j-menezes

Minha sugestão é você usar pool de conexão. O Resultado final é maior velocidade com menos abertura e fechamento de banco de dados em toda e qualquer transação. Mas isso depende muito do numero de usuarios simultaneos no seu sistema. “Bons codigos”.

Fabiano_Fernandes

Melhor solução amigo

romero.dias

Amigo,

Já estive sem situação parecida. Utilizei o pattern Singleton que garante somente uma instancia da objeto. Isso garante somente uma conexão por usuário.
O ponto negativo é: após a primeira chamada a conexão com o banco ficará aberta até que o usuário feche a app ou até que você invoke um close() explicitamente.

Segue um exemplo:

`public class TestSingleton

{

public static void main(String[] args)

{

Connection c1 = Connection.getInstance();

Connection c2 = Connection.getInstance();

Connection c3 = Connection.getInstance();
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);

}
}

class Connection

{

private Connection(){}

static Connection instance;

public static Connection getInstance() {

if(instance == null)

instance = new Connection();

return instance;

}

}`

Saída: (Veja que se trata da mesma instancia para os três objetos: c1,c2 e c3)
Connection@6d06d69c Connection@6d06d69c Connection@6d06d69c

Criado 23 de fevereiro de 2016
Ultima resposta 29 de mar. de 2016
Respostas 6
Participantes 5