Утечка памяти приложения Unity — как можно профилировать без доступа к исходному коду или цели отладки?
Немного необычная установка здесь,
- Я создаю моды для видеоигры RUST.
- Он использует HARMONY для загрузки модов в код сервера.
- В какой-то момент я сделал что-то, что вызвало утечку памяти, приложение увеличилось с 10 ГБ в памяти до 30 ГБ в течение дня, когда его использовали сотни игроков.
- Моды написаны на C#, но ядром Unity является C++.
- Выгрузка всех модов не приводит к тому, что сборщик мусора очищает используемую память, даже при ручном вызове gc.collect.
Я пытался подключить традиционные профилировщики памяти, такие как ANTS и dotMemory, но они не подключаются — я уверен, что это связано с отсутствием релизной сборки или тем фактом, что это приложение Unity.
Я пытался подключить отладчик Unity, но он не распознает игру.
У меня заканчиваются варианты, кто-нибудь знает, можно ли попросить GC вывести, какие объекты в настоящее время отслеживаются? Возможно, можно использовать Harmony, чтобы подключиться к фактическому этапу выделения памяти в GC, и я мог бы отслеживать вручную?