You will notice that 40K or so of memory isn't very big, so once the number of bytes in SurvivorSpace reaches the defined threshold, the scavenger will tenure objects to OldSpace from SurvivorSpace until there is room in the SurvivorSpace. OldSpace is a number of memory segments that combine to form a virtual chunk of contiguous memory. This fact leads to the external behavior shown to the hosting operating system. A VW image will grow by chunks. Once the memory is allocated from the hosting operating system, it is not returned.
Images never shrink, they just grow.
As a matter of fact, you need to in order to solve a problem known as the 'Early Tenuring Issue', the result of an application holding objects for a few hundred milliseconds too long. When this happens, objects are tenured into OldSpace too early and promptly die, thus defeating the generation scavenging logic. This shifts NewSpace GC work to the OldSpace GC logic. To show how this happens, let us create an object that will artificially hold items and cause the early tenuring problem. We will then alter the size of SurvivorSpace to observe how it will affect performance.