FireBird é um projeto open-source software que criou um sistema de gerenciamento de banco de dados relacional baseado na linguagem de programação SQL. FireBird iniciou o desenvolvimento em 2000 e nos últimos 10 anos, tornou-se um servidor de classe empresarial completo que funciona em uma ampla variedade de plataformas. Ele tem um complexo conjunto de parâmetros de configuração e opções que determinam como ele é executado em uma variedade de configurações simples ou multi- servidor. Um subconjunto desses parâmetros determina o comportamento dos diferentes pools de memória do SQL Server cria e mantém durante sua operação - cada piscina é um espaço de endereçamento de memória virtual contígua que serve a um propósito bem definido. Mantenha várias questões em mente sempre que a configuração de pools de memória para o Firebird . A subnotificação de Piscina Memória
Cada piscina tem um cache associado a ele, inutilizado por qualquer outra piscina. Apesar do fato de que um segmento de cache pode ser diretamente atribuído a um conjunto específico , o seu tamanho não é adicionado ao tamanho da piscina ao relatar estatísticas de memória . O tamanho padrão do segmento de cache é de 64 megabytes.
Vazamento de memória no Windows Versão
Sempre que uma conexão de cliente é recebido pelo servidor ( a partir do nó local ou a partir de um remoto ) , o motor FireBird aloca um pedaço extra de memória a partir de um driver de modo kernel. Esta memória não é liberada corretamente - nem mesmo quando a conexão que causou a existir termina . Devido a isso, essas alocações de memória somar até que o Windows ficar sem memória depois de um período específico de tempo que depende da freqüência com que as conexões com o servidor foram abertos. As versões mais recentes do Firebird já ter corrigido esse problema.
Manipulação incorreta de Exceções pool de memória
Quando condições excepcionais ocorrem nos pools de memória de manipulação de código, o manipulador de exceção deve alocar memória extra - mas ela não pode fazer isso, porque toda a alocação de memória nova está bloqueada por um bloqueio mutex ainda detidas pelos pools de memória de manipulação de código. Isso resulta em core dumps sem qualquer mensagem informativa sobre as causas do erro.