Проект, над которым я работаю, касается модификации систем управления кучей и сборки мусора OpenJdk. В настоящее время моя главная задача — найти сегменты кода, которые отвечают за выделение пространства в куче при создании нового объекта.
Мне было интересно, если какие-либо эксперты Java могут сказать мне, где начать поиск.
Любая ваша обратная связь будет принята с благодарностью.
метод InstanceKlass::allocate_instance
может быть хорошей отправной точкой для вашего исследования. Это зовет CollectedHeap::obj_allocate
,
Это также зависит от того, какой сборщик мусора вы хотите использовать. Я недавно работал над мусор первым (G1) GC, основной класс которого находится в /share/vm/gc_implementation/g1/g1CollectedHeap
,
Вы также можете взглянуть на наш исследовательский проект AntTracks, которая состоит из настраиваемой JVM, которая отслеживает распределение и перемещение каждого объекта в JVM и записывает его в файл трассировки, который затем можно проанализировать. Поэтому мы также должны были оборудовать каждое место, где GC выделяет объект.