Выполнение этого по таймеру может быть излишним, и возникает проблема параллелизма.
А как насчет очистки мертвых ссылок как части какой-либо другой операции?Например, если это список и порядок не важен, то добавление нового элемента может заменить первую найденную мертвую ссылку новой, а не добавлять ее в конец.Или запускайте развертку всякий раз, когда какое-то событие, которое вы не ожидаете, слишком часто происходит - возможно, когда поиск извлекает мертвую ссылку.