It tends to be pretty random. Memory gets allocated and deallocated all the time, so you tend to suffer fragmentation.
With virtual memory, you can also map any physical memory to any virtual address space, so what appears to be a linear block of memory to an application may be scattered all over the physical memory.