You can treat external references as GC roots.
Which brings you back to doing an expensive scan of the large off-heap data structure you were trying to avoid.
You can treat external references as GC roots.