class MemoryManager {

	public void reserveMemory(Object owner, long size) throws MemoryReservationException {
		checkMemoryReservationPreconditions(owner, size);
		if (size == 0L) {
			return;
		}

		memoryBudget.reserveMemory(size);

		reservedMemory.compute(owner, (o, memoryReservedForOwner) ->
			memoryReservedForOwner == null ? size : memoryReservedForOwner + size);

		Preconditions.checkState(!isShutDown, "Memory manager has been concurrently shut down.");
	}

	  MemoryManager(long memorySize, int pageSize, int verifyEmptyWaitGcMaxSleeps);

}