For unknown reason watch '@releaseDomain' is called twice: first when domain disappeared from xenstore, second when resources (including memory) are freed. So call do_balance after each of this event to redistribute freed memory.