You have some excellent answers here.
But to add - There are processes that run within the management OS that consume RAM. And the overall memory use of the management OS is not VMs only.
If you run an application and that application consumes 2GB of RAM - then Hyper-V is going to consider this RAM 'allocated' and it will not try and steal it away just to start your VM.
Usually an easy way to clear this type of memory use (especially when it becomes a block) is to logout and then log back in - this forces memory clean up within your user session and usually resolves these types of situations.
This is especially the case if you leave the Hyper-V Management console open and you connect to your Hyper-V Server using RDP. The RAM is not free'd on disconnect and reconnect and keeps consuming more. Only a logout cleans it up.