Heap allocation source code in in jdk(G1GC) [closed]

Tags: , , ,



I want to understand how java allocates objects in heap. I want to know which parts of the JDK code are triggered when the “new” keyword is used.
How can I define a function that a user can call from the java code and that would implement functionality in JDK source code?
I am aware of the fact that jdk14 uses G1GC as a default garbage collector and G1GC code is present in jdk14/src/hotspot/share/GC/G1 folder but I am unable to follow G1Allocator allocates memory to the user threads(if it does).

Answer

Any known implementation will use TLAB (thread local allocation buffer) by default when allocating memory. Without it – the allocation would be much more slower. Though I have not dived into the code too much about this subject, you can start from here, for example.

There is a very good comment in the source code about what happens when a new is requested here. Basically if TLAB can be used (an Object is not bigger than that for example), it will be; otherwise raw malloc for every new will be done.

Regarding G1 here are the mains points of what it does. A general explanation is again in the comments, with a phrase :

All non-TLAB allocation requests should go to mem_allocate()

What mem_allocate does can be started from here.



Source: stackoverflow