Вы можете попытаться использовать CLR Profiler от Microsoft , чтобы узнать, какой поток выделил и получил доступ к вашему объекту. Я не уверен, что !gcroot
показывает объекты, ожидающие финализатор, но CLR Profiler определенно показывает. Ваш объект также может вообще не ссылаться на какой-либо корень GC, и он просто ожидает сбора. Это может занять некоторое время, особенно если оно размещено в куче больших объектов. Попробуйте заставить несколько сборщиков мусора (и посмотрите, действительно ли коллекции gen0-2 имели место) и посмотрите, выживет ли ваш объект.