FireBird ist ein Open- Source-Software -Projekt, das eine relationale Datenbank -Management-System auf dem SQL- Programmiersprache erstellt . FireBird begann mit der Entwicklung im Jahr 2000 , in den letzten 10 Jahren hat es sich zu einem vollwertigen Server der Enterprise-Klasse , die auf einer Vielzahl von Plattformen läuft. Es hat eine komplexe Konfiguration Parameter und Optionen , wie es auf einer Vielzahl von Einzel - oder Multi-Server- Konfigurationen läuft bestimmen. Eine Untergruppe dieser Parameter bestimmt das Verhalten der verschiedenen Speicher-Pools der SQL-Server erstellt und verwaltet während des Betriebs - jeder Pool -Adressraum zusammenhängenden virtuellen Speicher, der einen gut definierten Zweck dient. Halten Sie mehrere Fragen im Hinterkopf , wenn die Konfiguration Speicherpools für FireBird . Under - Reporting von Pool -Speicher
Jeder Pool hat einen Cache mit ihm verbunden sind, unbrauchbar von einem anderen Pool. Trotz der Tatsache, dass ein Cache-Segment direkt an einen bestimmten Pool zugeordnet werden , ist seine Größe nicht an den Pool der Größe hinzugefügt, wenn die Berichterstattung Speicher Statistik. Die Standardgröße des Cache-Segment ist 64 Megabyte .
Memory Leak auf Windows Version
Immer wenn ein Client-Verbindung wird vom Server empfangen werden ( entweder aus dem lokalen Knoten oder von einem Remote- one) , weist der Motor einen zusätzlichen FireBird Teil des Speichers von einem Kernel-Modus -Treiber. Dieser Speicher ist nie vollständig befreit - auch nicht , wenn die Verbindung , die es nicht beseitigt endet. Aus diesem Grund , fügen Sie diese Speicherzuweisungen bis Windows läuft der Speicher nach einer bestimmten Zeit , die auf der Häufigkeit, mit der Verbindungen mit dem Server geöffnet wurden abhängt. Die neuesten Versionen von FireBird haben dieses Problem bereits behoben.
Falsche Handhabung von Speicher-Pool Ausnahmen
außergewöhnlichen Bedingungen treten in den Code - Handling Speicherpools , die Exception-Handler zuweisen müssen zusätzliche Speicher - aber es kann nicht das tun, weil alle Zuteilung neuer Speicher durch einen Mutex-Sperre noch von den Code - Handling Speicherpools gehalten blockiert ist. Dies führt in Core-Dumps ohne informative Meldung über die Ursachen des Fehlers.