org.apache.java.recycle
Class AdaptiveController

java.lang.Object
  |
  +--org.apache.java.recycle.AdaptiveController

public class AdaptiveController
extends java.lang.Object
implements Controller

This controller creates a simple yet very effective negative feedback that stabilizes the level of the container. It is based on a simple idea but it proves to be very adaptive to any kind of load creating the minimum level that, on average, the container needs to fully satisfy its requests without consuming memory or being empty.

The control is based on the assumption that if the container is empty, some new object will be created and will later on be recycled. Following this assumption, when the container is empty, its optimum level is raised to allow more objects to be stored when they will be recycled.

On the other end, when the container reaches its top level, it means there are too many objects and the level is lowered.

There is room for objects to be recycled only when the level is lower than the top one. Note that you don't need to define any parameter to this controller since it will find the best top level based on the history of the requests, optimizing memory use by itself.

Version:
$Revision: 1.3 $ $Date: 1999/06/24 00:50:48 $

Field Summary
private  int level
           
private  int top
           
 
Constructor Summary
AdaptiveController()
           
 
Method Summary
 void down()
          Signal an object request.
 boolean isThereRoomFor(Recyclable object)
          Evaluates the room for the recyclable object
 void up()
          Signal an object recycle.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

top

private int top

level

private int level
Constructor Detail

AdaptiveController

public AdaptiveController()
Method Detail

up

public void up()
Signal an object recycle.
Specified by:
up in interface Controller

down

public void down()
Signal an object request.
Specified by:
down in interface Controller

isThereRoomFor

public boolean isThereRoomFor(Recyclable object)
Evaluates the room for the recyclable object
Specified by:
isThereRoomFor in interface Controller