Следует помнить одну вещь при использовании mono_gchandle_new (), с которой я столкнулся ... он будет сохранять только объект C #, на который вы ссылаетесь, в памяти, но если этот объект выделяет другие объекты, на которые все еще распространяются процедуры сборки мусора.Тот факт, что объект, для которого у вас есть дескриптор, может освободить свои подобъекты, вызвал у меня немало проблем.
В настоящее время я копаюсь в моно-системе ГХ, чтобы посмотреть, смогу ли яисправить это так, что он будет рассматривать эти объекты как корневые объекты.
Если у вас мало объектов (<4096), вы можете использовать mono_gc_register_root () ... у нас может быть тысячи объектов, так что это плохо для нашего использования. </p>
ОБНОВЛЕНИЕ:Так что я ошибся в этом, мы подключились к системе выделения моно объектов, и мы неправильно передавали переменную «atomic» в функции выделения GC.«Атомный» означает нечто отличное от GC, он не имеет ничего общего с одновременным доступом, на самом деле это означает, что выделяемая память ссылается на другие объекты (atomic = 0) или нет (atomic = 1).