none
Windows Forms + Entity Usando muita memória RRS feed

  • Pergunta

  • oi amigos,

    Estou com um problema em um dos meus sistemas e queria uma ajuda de vocês.

    O sistema esta relacionado a rede hotelaria. Existe vários registros no banco de dados. Tipo, uma tabela contém mais de 50 mil registros.

    Acontece, que quando abra um formulario a memória aumenta de 100 a 200 MB. O problema maior é que mesmo depois de fechar o formulário a memória não diminuir. E se abrir o formulário novamente, vai aumentando sem parar.

    Antes, estava abrindo os Forms e não dando o dispose. Agora, faço isso, mas mesmo assim nada muda..

                                             

            try
                                        {
                                             telaExtrato = new Consumo.FormExtrato(Consumo.MeusTipos.Reserva,    

                                                                                               identificacao.CheckIn.RESCODIGO.ToString());
                                             telaExtrato.ShowDialog();

                                        }

                                        finally
                                        {
                                            if (telaExtrato != null)
                                            {
                                                telaExtrato.Dispose();
                                                telaExtrato = null;
                                            }
                                        }

    quarta-feira, 1 de fevereiro de 2017 21:38

Todas as Respostas

  • Olá regymatrix

    Neste momento você já fez alguma chamada ao banco de dados?


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    quinta-feira, 2 de fevereiro de 2017 10:06
  • Olá Regymatrix!

    Então, provavelmente você tenha um dataset dentro desse form que permanece em memória mesmo fechando o form. Uma ideia é dar dispose em todos esses objetos que possam ficar abertos mesmo fechando o form.

    Outro teste que vc pode fazer, como teste, é usar o GC.Collect.

    Por último, olhar se o handler do form filho está sendo guardado pelo pai.

    Uma última coisa que vi aqui em outro forum é usar um memory profiler tipo este aqui:

    http://memprofiler.com/

    quinta-feira, 2 de fevereiro de 2017 10:41
  • oi Daniel,

    Isso mesmo. Quando o formulário abre ele cria uma instancia da classe context do banco de dados.  Apliquei o padrão singleton e reduziu para 100 MB. Resolveu, o problema. No entanto, não entendi o conceito, pois se o Form é fechado, pelo que entendi, seus objetos são destruídos. O que não estava acontecendo, ou demorando para acontecer..

    Se soube fundamentar ficaria grato.

    sexta-feira, 3 de fevereiro de 2017 16:39