Firebird est un projet de logiciel open-source qui a créé un système de gestion de base de données relationnelle basé sur le langage de programmation SQL. FireBird a commencé le développement en 2000 ; au cours des 10 dernières années , il est devenu un serveur de classe entreprise à part entière qui fonctionne sur une grande variété de plates-formes. Il dispose d'un des paramètres de configuration de jeux complexes et des options qui déterminent comment il fonctionne sur une variété de configurations simples ou multi- serveur. Un sous-ensemble de ces paramètres détermine le comportement des différents pools de mémoire du serveur SQL crée et maintient pendant son fonctionnement - chaque piscine est un espace d'adressage de la mémoire virtuelle contigu qui sert un objectif bien défini. Gardez plusieurs questions à l'esprit chaque fois que la configuration des pools de mémoire pour Firebird . La sous-déclaration de la poule mémoire Chaque piscine dispose d'un cache qui lui est associée , inutilisable par une autre piscine. Malgré le fait qu'un segment de cache peut être directement attribué à un groupe spécifique , sa taille n'est pas ajouté à la taille de la piscine lors de la déclaration des statistiques de mémoire. La taille par défaut du segment de la mémoire cache est de 64 mégaoctets. Fuite de mémoire sous Windows Version Chaque fois qu'une connexion client est reçu par le serveur ( soit à partir du nœud local ou à partir d'une seule télécommande ) , le moteur de Firebird alloue un morceau supplémentaire de mémoire à partir d'un pilote en mode noyau. Cette mémoire n'est jamais libérée correctement - pas même lorsque la connexion qui a provoqué d'exister termine. Pour cette raison, ces allocations de mémoire s'additionnent jusqu'à ce que Windows est à court de mémoire après un laps de temps qui dépend de la fréquence avec laquelle les connexions avec le serveur ont été ouverts. Les dernières versions de Firebird déjà corrigé ce problème. De manipulation incorrecte de la mémoire Piscine Exceptions Lorsque des conditions exceptionnelles se produisent dans les pools de mémoire le code de traitement , le gestionnaire d' exception doit allouer de la mémoire supplémentaire - mais il ne peut pas faire cela, parce que toutes les allocations de nouvelle mémoire est bloqué par un verrou mutex encore détenus par les pools de mémoire le code de manutention . Il en résulte un core dump sans message d'information sur les causes de l'erreur.
|