How Garbage Collection works:
1. Eden Space
2.Two Survivor Spaces
There are 3 spaces in total, two of which are Survivor spaces. The order of execution process of each space is as below:-
1 The majority of newly created objects are located in the Eden space.2 After one GC in the Eden space, the surviving objects are moved to one of the Survivor spaces.
3.After a GC in the Eden space, the objects are piled up into the Survivor space, where other surviving objects already exist.
4. Once a Survivor space is full, surviving objects are moved to the other Survivor space. Then, the Survivor space that is full will be changed to a state where there is no data at all.
5. The objects that survived these steps that have been repeated a number of times are moved to the old generation.
You can see by checking these steps, one of the Survivor spaces must remain empty. If data exists in both Survivor spaces, or the usage is 0 for both spaces, then take that as a sign that something is wrong with your system.
Note: HotSpot VM, two techniques are used for faster memory allocations. One is called "bump-the-pointer," and the other is called "TLABs (Thread-Local Allocation Buffers)."
Bump-the-pointer
Technique tracks the last object allocated to the Eden space. That object will be located on top of the Eden space. And if there is an object created afterwards, it checks only if the size of the object is suitable for the Eden space. If the said object seems right, it will be placed in the Eden space, and the new object goes on top. So, when new objects are created, only the lastly added object needs to be checked, which allows much faster memory allocations. However, it is a different story if we consider a multithreaded environment. To save objects used by multiple threads in the Eden space for Thread-Safe, an inevitable lock will occur and the performance will drop due to the lock-contention.
TLABs (Thread-Local Allocation Buffers)
Thread-Local Allocation Buffers is the solution to this problem in HotSpot VM. This allows each
thread to have a small portion of its Eden space that corresponds to
its own share. As each thread can only access to their own TLAB, even
the bump-the-pointer technique will allow memory allocations without
a lock.
This has been a quick overview of the GC in the young generation. You do not necessarily have to remember the two techniques that We have just mentioned.But please remember that after the objects are first created in the Eden space, and the long-surviving objects are moved to the old generation through the Survivor space.



