Я ничего не знаю о том, как решить это во время выполнения, или о том, что вы могли бы сделать, чтобы избежать этого, как только вы предскажете, что это произойдет. Лучше всего попытаться избежать этого.
1) Вы можете использовать Findbugs , что может указывать на некоторые ошибки StackOverFlow, возникающие из-за непреднамеренного вызова того же самого метода из самого себя.
2) Вы можете хранить данные, которые могут вызвать нехватку памяти с помощью SoftReference, и иметь нулевую проверку на доступ к ним, чтобы их можно было перезагрузить, если они были собраны сборщиком мусора.
Если что-то из этого на самом деле является для вас проблемой, то, вероятно, решение состоит не в том, чтобы обнаружить его, а в том, чтобы по-другому его проектировать, чтобы избежать их, если это вообще возможно.