Firebird è un progetto di software open-source che ha creato un sistema di gestione di database relazionale basato sul linguaggio di programmazione SQL . FireBird iniziato lo sviluppo nel 2000 , negli ultimi 10 anni, è diventato un server di classe enterprise a tutti gli effetti , che gira su una vasta gamma di piattaforme . Dispone di un complesso set di parametri di configurazione e le opzioni che determinano come funziona su una varietà di configurazioni singole o multi- server. Un sottoinsieme di questi parametri determina il comportamento dei diversi pool di memoria del server SQL crea e mantiene durante il suo funzionamento - ogni pool è uno spazio di indirizzi di memoria virtuale contigua che ha uno scopo ben definito . Mantenere diverse questioni in mente ogni volta che la configurazione dei pool di memoria per Firebird . Sotto-segnalazione di Pool Memory
Ogni piscina ha una cache ad esso associati , inutilizzabile da qualsiasi altra piscina . Nonostante il fatto che un segmento cache può essere attribuito direttamente ad un pool specifico , la sua dimensione non viene aggiunto alla dimensione della piscina quando segnalano statistiche della memoria . La dimensione predefinita del segmento di cache è di 64 megabyte .
Perdita di memoria su Windows Versione
Ogni volta che una connessione client viene ricevuta dal server (sia dal nodo locale o da uno remoto ) , il motore di FireBird alloca un pezzo aggiuntivo di memoria da un driver in modalità kernel . Questa memoria non viene mai liberata correttamente - non anche quando la connessione che ha provocato l' esistere termina. Per questo motivo, tali allocazioni di memoria si sommano fino a quando Windows esaurisce la memoria dopo un determinato periodo di tempo che dipende dalla frequenza con la quale sono stati aperti i collegamenti con il server . Le nuove versioni di Firebird hanno già corretto questo problema .
Gestione non corretta della memoria del pool eccezioni
Quando si verificano condizioni eccezionali nelle piscine di memoria del codice di gestione , il gestore di eccezioni deve allocare memoria aggiuntiva - ma non può farlo, perché tutti allocazione di nuova memoria è bloccata da un blocco mutex ancora detenute dal pool di memoria di codice di gestione . Ciò si traduce in core dump senza alcun messaggio informativo circa le cause dell'errore.