MaxDirtyBuffers does not allocate additional memory.
The MaxDirtyBuffers param represents the maximum number of NumberOfBuffers that are allowed to be “dirty” (i.e., have changes in memory, not yet stored on disk), which is why it is a percentage (i.e., 75% of NumberOfBuffers) before they are flushed/written to disk.
It all buffers are used, then Virtuoso will start using the the Linux swap space on disk to swap buffers in and out of RAM. This is why the performance degrades when all buffers are used, because of the need to start swapping in and out of memory.
Dirty Buffers is not related to used buffers; as stated previously, these are buffers that are in use that have changes which have not been committed to the Virtuoso database file on disk – which is separate from swap space.