free - memory that is readily available to any entity requesting memory.
active - memory currently in use or very recently used, and so it is in RAM.
inactive - memory that is marked as not used.
wired - memory that is marked to always stay in RAM. It is never moved to disk.
pinned - same as 'wired'.
anon - memory not associated with a file (cannot be re-read from it).
exec - executable code, typically from a (program) file.
file - cache for contents of recently accessed files.
buffers - cache for things like file system metadata.
cached - cache for various things.
shared - memory that may be simultaneously accessed by multiple processes.
used - active + wired memory.
pused - active + wired memory in relation to total.
available - inactive + cached + free memory.
pavailable - inactive + cached + free memory in relation to 'total'.
The sum of vm.memory.size[used] and vm.memory.size[available] does not necessarily equal total. For instance, on FreeBSD active, inactive, wired, cached memories are considered used, because they store some useful information.
At the same time inactive, cached, free memories are considered available, because these kinds of memories can be given instantly to processes that request more memory.
So inactive memory is both used and available simultaneously. Because of this, item vm.memory.size[used] is designed for informational purposes only, while item vm.memory.size[available] is designed to be used in triggers.
See the "See also" section at the bottom of this page to find more detailed information about memory calculation in different OS.
on AIX and Solaris available and free are the same