code: public ObjectContainer<T> take() throws InterruptedException
    {
      final ObjectContainer<T> ret = queue.take();
      currentMemory.addAndGet(-ret.getSize());
      return ret;
    }
docs: blocks until at least one item is available to take