Eclipse разбивается на processWorkerExit

После выполнения нескольких запросов мое затмение начало ломать метод processWorkerExit().

В соответствии с этой ссылкой Я знаю, как подавить нарушение затмения, но есть ли причина, по которой этот код нарушает эту строку. Может ли быть утечка памяти в таком случае?

Tomcat 7.0.27
Eclipse 3.7.2
JDK 7.0.02

enter image description here

Ответ 1

Ответ здесь: OpenJDK разбивается на processWorkerExit без точки останова

В режиме отладки в eclipse по умолчанию перерыв на неперехваченных исключениях проверено. Поскольку у вас нет метода catch здесь, вероятно, что неперехваченное исключение бросается, и отладчик ломается вы немедленно перед тем, как будет выброшено исключение. Вы можете отключить его предпочтения в Java- > Debug.

Ответ 2

Причина, по которой отладчик останавливается в этой строке, состоит в том, что в блоке try{} генерируется исключение, и эта конкретная строка кода является следующей исполняемой строкой кода после исключения исключения. Вы почти наверняка видите трассировку стека этого исключения в окне консоли, потому что по умолчанию непрозрачное исключение, которое пузырится до Thread.run(), будет отправлено на stderr.

Что касается вашего вопроса о том, может ли быть утечка памяти (или, скорее, это Java, утечка ресурса): ответ да, там может быть. Но в этом коде нет ничего, чтобы указать, что там есть. Если бы была такая утечка, это почти наверняка было бы потому, что в реализации task есть некорректная обработка исключений.

Ответ 3

У меня была такая же проблема. Он ломается в вашем предложении try/catch, если он у вас есть, если вы не регистрируете исключение. Попробуйте вставить точку останова или вывод в LogCat следующим образом:

try
{
   //HERE I'VE PUT ALL THE FUNCTIONS THAT WORK FOR ME
   Log.e("tag", "Sth passed!");
}
catch (Exception e)
{
   //The task failed
   Log.e("tag", e.getMessage());           
}

Если у вас нет блока try/catch, поставьте его как в приведенном выше коде. В LogCat вы можете увидеть последнюю строку кода, которая была запущена до исключения, она поможет вам найти ошибку в вашем коде так:

08-28 05: 49: 52.321: E/SQLiteDatabase (834): в java.lang.Thread.run(Thread.java:841)