Si utiliza desalojadores de plug-in, éstos no se activarán hasta que los cree y los asocie con una correlación de respaldo. Los siguiente métodos recomendados aumentan el rendimiento de desalojadores LFU (utilizados con menor frecuencia) y desalojadores LRU (menos utilizados recientemente).
El concepto de un desalojador LFU es eliminar entradas de la correlación que menos se utilizan. Las entradas de la correlación se expanden en un volumen establecido de almacenamientos dinámicos. A medida que aumenta el uso de una entrada en memoria caché determinada, se ordena en una posición más alta en el almacenamiento dinámico. Cuando el desalojador intenta un conjunto de desalojos, elimina sólo las entradas de la memoria caché ubicadas por debajo de un punto específico del almacenamiento dinámico binario. Como resultado, se desalojan las entradas usadas con menor frecuencia.
El desalojador LRU sigue los mismos conceptos que el desalojador LFU con unas pocas diferencias. La diferencia principal es que el LRU utiliza una cola FIFO (primero en entrar, primero en salir) en lugar de un conjunto de almacenamientos dinámicos binarios. Cada vez que se accede a una entrada de la memoria caché, ésta se mueve a la cabeza de la cola. En consecuencia, la parte inicial de la cola contiene las entradas de correlación utilizadas más recientemente y la parte final empieza con las entradas de correlación menos utilizadas recientemente. Por ejemplo, la entrada de la memoria caché A se utiliza 50 veces, y la entrada de la memoria caché B se utiliza sólo una después de la entrada de la memoria caché A. En esta situación, la entrada de la memoria caché B se coloca en la parte delantera de la cola porque se ha utilizado recientemente, mientras que la entrada de la memoria caché A se coloca al final de la cola. El desalojador LRU desaloja las entradas de la memoria caché que están en la parte final de la cola, que son las entradas de correlación menos usadas recientemente.
Al utilizar el desalojador LFU, todas las entradas de la memoria caché de una correlación determinada se ordenan según el número de almacenamientos dinámicos que se especifique, lo que mejora drásticamente el rendimiento e impide que se sincronicen los desalojos en un almacenamiento dinámico binario que contenga todas las ordenaciones de la correlación. A mayor número de almacenamientos dinámicos menor es el tiempo necesario para reordenarlos porque cada uno de ellos tiene menos entradas. Establezca el número de almacenamientos dinámicos en 10% del número de entradas en BaseMap.
Al utilizar el desalojador LRU, todas las entradas de la memoria caché de una correlación determinada se ordenan según el número de colas LRU que se especifique, lo que mejora drásticamente el rendimiento e impide que se sincronicen los desalojos en una cola que contenga todas las ordenaciones de la correlación. Establezca el número de colas en 10% del número de entradas en BaseMap.
Cuando un desalojador LFU o LRU empieza a desalojar entradas, utiliza la propiedad de desalojador MaxSize para determinar cuántos almacenamientos dinámicos binarios o elementos de cola LRU va a desalojar. Por ejemplo, presuponga que establece el número de almacenamientos dinámicos o colas en unas 10 entradas de correlación en cada cola de correlación. Si la propiedad MaxSize se establece en 7, el desalojador desaloja 3 entradas de cada almacenamiento dinámico u objeto de cola para que el tamaño del almacenamiento dinámico o de la cola se reduzca a 7. El desalojador sólo desaloja entradas de correlación de un almacenamiento dinámico o cola cuando en éstos hay un valor mayor que el de la propiedad MaxSize. Establezca MaxSize en 70% del tamaño de la cola o almacenamiento dinámico. En este ejemplo, el valor se estableció en 7. Puede obtener un tamaño aproximado de cada almacenamiento dinámico o cola si divide el número de entradas BaseMap entre el número de almacenamientos dinámicos o colas utilizado.
Un desalojador no elimina constantemente entradas de la correlación. Está inactivo durante un tiempo determinado, y sólo comprueba la correlación cada n número de segundos, donde n equivale a la propiedad SleepTime. Esta propiedad afecta positivamente al rendimiento: ejecutar un barrido de desalojo suele disminuir el rendimiento debido a los recursos que se necesitan para procesarlos. Sin embargo, no utilizar el desalojador con frecuencia puede generar una correlación que tiene entradas que no son necesarias. Una correlación con muchas entradas que no necesita puede afectar negativamente a los requisitos de memoria y al proceso de los recursos de la correlación. Para la mayoría de las correlaciones se recomienda establecer el intervalo de barrido de desalojo en 15 segundos. Si la correlación se graba con frecuencia y se utiliza a una velocidad de transacción alta, conviene establecer el tiempo en un valor más bajo. Si se accede a la correlación con poca frecuencia, establezca el tiempo en un valor más alto.
El ejemplo siguiente define una correlación, crea un desalojador LFU nuevo, establece las propiedades del desalojador y establece la correlación que va a utilizar el desalojador:
//Usar
ObjectGridManager para crear/obtener ObjectGrid. Consulte el
// apartado ObjectGridManger
ObjectGrid objGrid = ObjectGridManager.create............
BackingMap bMap = objGrid.defineMap("SomeMap");
//Establecer propiedades presuponiendo 50.000 entradas de correlación
LFUEvictor someEvictor = new LFUEvictor();
someEvictor.setNumberOfHeaps(5000);
someEvictor.setMaxSize(7);
someEvictor.setSleepTime(15);
bMap.setEvictor(someEvictor);
Usar el desalojador LRU es muy parecido a usar un desalojador LFU. A continuación se muestra un ejemplo:
ObjectGrid objGrid = new ObjectGrid;
BackingMap bMap = objGrid.defineMap("SomeMap");
//Establecer propiedades presuponiendo 50.000 entradas de correlación
LRUEvictor someEvictor = new LRUEvictor();
someEvictor.setNumberOfLRUQueues(5000);
someEvictor.setMaxSize(7);
someEvictor.setSleepTime(15);
bMap.setEvictor(someEvictor);
Observe que sólo hay dos líneas distintas al del ejemplo del desalojador LFU.