Search code examples
javamemorygarbage-collectionheap-memoryjmap

What is the meaning of "From Space" and "To Space" shown in jmap?


I understand the difference between new gen / old gen /perm gen, but I don't know what "To Space" and "From Space" are. I am seeing my "From Space" hitting 99.8% used while the "To Space" always seems to stay at 0% used.


Solution

  • Two regions in the garbage-collection algorithm that is used in the VM.

    Java specifics are found here: How Garbage Collection works in Java

    And a general explanation about "from space" and "to space": WP

    The most straightforward approach is the semi-space collector, which dates to 1969. In this moving GC scheme, memory is partitioned into a "from space" and "to space". Initially, objects are allocated into "to space" until they become full and a collection is triggered. At the start of a collection, the "to space" becomes the "from space", and vice versa. The objects reachable from the root set are copied from the "from space" to the "to space"

    The reason why your "to space" is at 0% is, that only one of them is used except during collection; when the collection is done and all objs are in the "to space" then the names are swapped and the "to space" is now called the "from space".