@Override
	public void run()
	{
		while (running)
		{
			try
			{
				// get a reference from the queue
				// this call blocks until a reference becomes available or it
				// times out
				@SuppressWarnings("unchecked")
				WeakReference<Object> ref = (WeakReference<Object>) this.deletedObjectQueue.remove(200);
				if (ref != null)
				{
					// remove the reference from the map
					purge(ref);
				}
			}
			catch (InterruptedException e)
			{
				// do nothing
			}
		}
	}