2010-05-03 11 views
13

Czy istnieje jakiś mechanizm w środowisku debugowania Eclipse, aby sprawdzić stan blokad synchronizacji i procesów oczekujących?debugowanie synchronizacji Java

+0

Czy debugujesz możliwą blokadę? – aioobe

+0

Znalazłem nieoczekiwany zakleszczenie, ale musiałem "zgadnąć", że może to być przypadek ze zbioru niewytłumaczalnie utkniętych procesów. Tam powinien być lepszy sposób. – ddyer

Odpowiedz

13

można pokazać stan obiektu w monitorach Debugger Eclipse. Możesz find a short, clear tutorial here. Dla każdego wątku Eclipse może wyświetlać monitory, do których ma dostęp wątek i na które czeka.

+1

Dzięki. Nie mogę sobie wyobrazić, dlaczego monitory są domyślnie wyłączone. – ddyer

+0

Może się zdarzyć, że działa to tylko w przypadku zakleszczenia spowodowanego zsynchronizowanym komunikatem. Obecnie szukam jeden spowodowane przez 'ReentrantReadWriteLock' i nie otrzymuję tego rodzaju informacji zaćmienie formularza. – Scheintod

1

Jak sugeruje here można (jeśli uruchomić Sun JVM) należy wykonać następujące czynności:

  1. JConsole uruchomienia lub jvisualvm (oba obecne w Bin-katalogu JDK-instalacji,
  2. mocujące aby proces podejrzewasz został zamknięty
  3. przejść do okienka wątków. znajduje się przycisk „Detect martwym”