Похоже, вам нужно сузить круг до кода, в котором есть ошибка, указав, какой поток сначала потребляет процессор, а затем какой код выполняется этим потоком, и в этот момент вы можете выполнять удаленную отладку.
Я бы предложил использовать что-то вроде JProfiler, jvisualvm, jconsole или что-то подобное. Использование одного из этих инструментов позволит вам получить представление о том, что делает поток, и позволит вам отсортировать потоки по используемым циклам процессора, чтобы вы могли быстро найти нарушающий поток.