public boolean free(T obj){
  int top=_top.get();
  if (top < _freeStack.length()) {
    boolean isFree=_freeStack.compareAndSet(top,null,obj);
    _top.compareAndSet(top,top + 1);
    return isFree;
  }
 else   return false;
}

public boolean free ( T obj ) { int top = _top . get ( ) ; if ( top < _freeStack . length ( ) ) { boolean isFree = _freeStack . compareAndSet ( top , null , obj ) ; _top . compareAndSet ( top , top + 1 ) ; return isFree ; } else return false ; }
frees the object . if the free list is full , the object will be garbage collected .
