Lý tưởng nhất, câu trả lời sẽ là nền tảng độc lập, nhưng nền tảng cụ thể, đặc biệt là Oracle JVM, cũng hữu ích. Dự án mà tôi đang làm vẫn đang chạy JVM phiên bản 6.Làm cách nào để báo cáo độ dài hàng đợi sự kiện AWT/Swing theo lập trình?
Nhu cầu cụ thể phải làm với một GUI thỉnh thoảng "đóng băng". Tôi biết rõ về việc thực hiện công việc GUI trên EDT. Chương trình hoạt động tốt trên Windows, nhưng sau khi chuyển sang Linux, các vấn đề GUI "lạ" này bắt đầu xảy ra. Trên thực tế, vấn đề này đã xảy ra trên hai ứng dụng, cả sau khi di chuyển Windows sang Linux. JVisualVM hiển thị hơn 10 triệu đối tượng java.awt.EventQueueItem
. Sự nghi ngờ là hàng đợi AWT đang phát triển nhanh hơn so với nó đang được phục vụ trên Linux, do đó, ý tưởng là đặt một chỉ số độ dài hàng đợi AWT trên ứng dụng và xem những gì nó hiển thị khi hàng đợi tăng/co lại.
Một chút Googling tìm thấy this, nhưng nó thực hiện quét tuyến tính của hàng đợi. Có lẽ có một số cách tốt hơn?
Để khám phá, bạn có thể chặn các sự kiện, như được hiển thị [ở đây] (http://stackoverflow.com/q/3158254/230513). – trashgod
Mười _million_! 'setCoalesce (sai)'? – trashgod
Không. Đã nghĩ về điều đó và quét cho nó. Không tắt logic kết hợp. –