The young generation is divided into three regions: an Eden space and two survivor spaces. Most objects (very large objects will be the exception) are allocated in Eden space using a simple (and fast) pointer bumping method. When the pointer reaches the end of the Eden space, a minor GC needs to occur. Rather than promoting all objects into the old gen straight away, they are allowed to sit in a survivor space for a period of time to give them longer to become garbage and reduce the load on the old gen collection.
There are two survivor spaces; one is the 'from' space (currently containing objects) and one is the 'to' space (effectively empty). Live data from Eden is copied to the 'to' space as well as any objects that are still live and have not reached the new threshold in the 'from' space. The roles of the two survivor spaces are then reversed ('to' becomes 'from', 'from' becomes 'to') ready for the next minor GC.
Objects in the survivor space that have reached the new (often called tenuring) threshold are promoted to the old generation.
Clearly, if your application allocates objects at a rate faster than the survivor spaces can handle the GC will promote objects more quickly. The parameter that affects this is the MaxTenuringThreshold, which is a maximum, not a definite value.
You can tune the size of the regions with a variety of parameters. Read this for more detail: