Main advantages:
- 64-bit VMs can use more registers and new instructions in the 64-bit instruction set which can improve performance of JIT-compiled code
- You are no longer limited to 32-bit heap sizes (this is unlikely to be a problem in normal usage, but could make a difference in some special cases e.g. if you are processing very large data arrays)
Main disadvantages:
- 64-bit pointers take up more space, so your code and data will require marginally more memory. Might be a minor issue if you are memory/cache constrained.
In my experience, both 32-bit and 64-bit VMs have both worked perfectly fine. So unless you are having a measurable problem with one or the other, there isn't much compelling reason to switch at present. For new deployments, I'd probably go for 64-bit VMs.