public void deferFree(final int rwaddr,final int sze){
  m_allocationWriteLock.lock();
  try {
    if (sze > (this.m_maxFixedAlloc - 4)) {
      m_deferredFreeOut.writeInt(-rwaddr);
      m_deferredFreeOut.writeInt(sze);
      log.debug("Unexpected code path deferring free of direct blob address");
    }
 else {
      m_deferredFreeOut.writeInt(rwaddr);
    }
  }
 catch (  IOException e) {
    throw new RuntimeException("Could not free: rwaddr=" + rwaddr + ", size="+ sze,e);
  }
 finally {
    m_allocationWriteLock.unlock();
  }
}

public void deferFree ( final int rwaddr , final int sze ) { m_allocationWriteLock . lock ( ) ; try { if ( sze > ( this . m_maxFixedAlloc - 4 ) ) { m_deferredFreeOut . writeInt ( - rwaddr ) ; m_deferredFreeOut . writeInt ( sze ) ; log . debug ( "Unexpected code path deferring free of direct blob address" ) ; } else { m_deferredFreeOut . writeInt ( rwaddr ) ; } } catch ( IOException e ) { throw new RuntimeException ( "Could not free: rwaddr=" + rwaddr + ", size=" + sze , e ) ; } finally { m_allocationWriteLock . unlock ( ) ; } }
adds the address for later freeing to the deferred free list . < p > if the allocation is for a blob then the sze is also stored < p > the deferred list is checked on allocblock and prior to commit . < p > deferredfrees are written to the deferred psoutputstream
