Размер шрифта:
Верификация кучи памяти объектов виртуальной машины
Изменена: 2021-10-13
Реферат
В настоящей статье рассмотрены алгоритмы верификации объектной кучи памяти (heap) виртуальной машины Java, а также разработан и реализован собственный алгоритм верификации объектной памяти на языке программирования С++, основанный на использовании собственных аллокаторов. Данный верификационный алгоритм обходит все объекты кучи, после чего применяет два этапа проверки ссылок на другие объекты в объектной памяти виртуальной машины специальными верификационными функциями. На первом этапе проверяется принадлежность ссылки к области памяти выделенной определённым аллокатором (специальной компонентой виртуальной машины, которая занимается выделением памяти под её различные структуры). На втором этапе, зная к какой области памяти, выделенной определённым аллокатором, принадлежит проверяемая ссылка, определяется непосредственно корректной данной ссылки. Данные этапы верификатора можно применять до и после работы сборщика мусора по опциям, подаваемым при запуске виртуальной машины. Такой алгоритм позволяет проверить правильность работы с виртуальной памятью как сборщика мусора, так и других компонент виртуальной машины, которые взаимодействуют с объектной кучей. Представленная работа является частью большого проекта компании Huawei Technologies Co. Ltd. по разработке виртуальной машины Java для мобильных устройств. Разработанный инструмент уже используется разработчиками компании для отлаживания ошибок времени выполнения и выявления недочётов работы с объектами в исходном коде программы. Для проверки правильности верификации реализован набор unit-тестов, покрывающий многочисленные ситуации работы с памятью виртуальной машины как правильные, так и заведомо ошибочные. Данный верификатор может совершенствоваться для увеличения скорости работы виртуальной машины и уменьшение воздействия на её работу.