"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como evitar vazamentos de memória da fonte de dados JDBC no Tomcat 7?

Como evitar vazamentos de memória da fonte de dados JDBC no Tomcat 7?

Publicado em 2024-11-20
Navegar:400

How to Prevent JDBC Datasource Memory Leaks in Tomcat 7?

Vazamento de memória da fonte de dados JDBC no Tomcat 7

Ao desligar o Tomcat 7 usando a fonte de dados JDBC, os usuários podem encontrar uma mensagem de aviso semelhante à abaixo:

SEVERE: The web application [/my_webapp] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.

Resolvendo o problema de registro do driver JDBC

Para resolver o problema relacionado ao cancelamento do registro do driver JDBC, certifique-se de que o destruidor O método está configurado corretamente no elemento em context.xml. A configuração correta deve ser:

Resolvendo o erro do temporizador de cancelamento da instrução MySQL

Para resolver o erro relacionado ao cancelamento da instrução MySQL Thread do temporizador, siga estas etapas:

  1. Mova o conector/driver MySQL para tomcat/lib: Coloque o MySQL Arquivo JAR do conector/driver no diretório tomcat/lib em vez de implementá-lo no arquivo WAR. Isso evita a criação de múltiplas instâncias do driver em cada implantação do WAR.
  2. Adicione um gancho de desligamento ao Tomcate: Introduza um gancho de desligamento para fechar o thread normalmente. Edite o arquivo web.xml e adicione o seguinte parâmetro de inicialização:
shutdownHookcom.example.MyShutdownHook

Crie a classe MyShutdownHook para executar após o desligamento do Tomcat:

public class MyShutdownHook implements Shutdownable {
    @Override
    public void shutdown() {
        // Logic to properly close the MySQL Statement Cancellation Timer thread
    }
}

Ao implementar as soluções acima, vazamentos de memória relacionados ao uso da fonte de dados JDBC e ao problema do temporizador de cancelamento de instrução MySQL podem ser efetivamente atenuados no Tomcat 7.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3