W idealnej sytuacji odpowiedź będzie niezależna od platformy, ale przydatne będą również specyficzne dla platformy, w szczególności Oracle JVM. Projekt, nad którym pracuję, nadal działa w wersji 6 JVM.Jak programowo zarejestrować długość kolejki zdarzeń AWT/Swing?
Szczególna potrzeba ma związek z interfejsem graficznym, który jest "zamrażany" od czasu do czasu. Doskonale zdaję sobie sprawę z pracy GUI nad EDT. Program działał dobrze w systemie Windows, ale po przejściu na Linuksa zaczęły się dziać te "dziwne" problemy z GUI. W rzeczywistości problem ten wystąpił w dwóch aplikacjach, zarówno po przeniesieniu systemu Windows do systemu Linux. JVisualVM pokazuje ponad 10 milionów obiektów java.awt.EventQueueItem
. Podejrzewa się, że kolejka AWT rośnie szybciej niż w Linuksie, więc chodzi o to, aby umieścić wskaźnik długości kolejki AWT na aplikacji i zobaczyć, co pokazuje, gdy kolejka rośnie/maleje.
Trochę Googling znalazł this, ale wykonuje liniowy skan kolejki. Może jest jakiś lepszy sposób?
Aby zbadać, można przechwytywać zdarzenia, jak pokazano [tutaj] (http://stackoverflow.com/q/3158254/230513). – trashgod
Dziesięć _million_! 'setCoalesce (false)'? – trashgod
Nie. Już o tym pomyślałem i to zeskanowałem. Nie wyłączając logiki koalescencyjnej. –