Giám sát ứng dụng .NET của tôi trong Màn hình Hiệu suất Tôi có thể xem .NET CLR LocksAndThreads/# của Chủ đề hợp lý hiện tại đang tăng đều đặn (hiện tại là 293) theo thời gian cho biết ngăn xếp chủ đề bị rò rỉ.các chủ đề lôgic hiện tại tăng/ngăn xếp luồng bị rò rỉ
Tôi có thể tìm thấy nhiều bài báo cho tôi biết đây là vấn đề nhưng không có gì cho tôi biết cách tìm nguyên nhân - vậy tôi bắt đầu từ đâu? Windbg có thể cho tôi biết vấn đề nằm ở đâu không?
Đây là màn biểu diễn của tôi trên 3hrs nói đề logic hiện tại của tôi là 150:
Và đây là sản phẩm của cửa sổ đề, mà không cho tôi biết nhiều vì tôi không thể truy cập ngăn xếp cuộc gọi của họ - chúng hầu như được đánh dấu là [không khả dụng] hoặc [Khi đang ngủ, hãy đợi hoặc tham gia] | [External Code]:
Unflagged 141024 124 Worker Thread <No Name> Normal
Unflagged > 0 0 Unknown Thread [Thread Destroyed]
Unflagged 136272 2 Worker Thread <No Name> Highest
Unflagged 133060 7 Worker Thread vshost.RunParkingWindow [Managed to Native Transition] Normal
Unflagged 136952 10 Main Thread Main Thread [edited].Program.Main Normal
Unflagged 134544 9 Worker Thread .NET SystemEvents [Managed to Native Transition] Normal
Unflagged 136556 11 Worker Thread Worker Thread [edited].MessageService.ProcessJobs.AnonymousMethod__0 Normal
Unflagged 141364 113 Worker Thread <No Name> [In a sleep, wait, or join] Normal
Unflagged 140896 0 Worker Thread [Thread Destroyed] Normal
Unflagged 136776 19 Worker Thread <No Name> [In a sleep, wait, or join] Normal
Unflagged 135704 20 Worker Thread <No Name> [In a sleep, wait, or join] Normal
Unflagged 136712 21 Worker Thread <No Name> [In a sleep, wait, or join] Normal
Unflagged 134984 22 Worker Thread <No Name> [In a sleep, wait, or join] Normal
Unflagged 134660 23 Worker Thread Worker Thread [edited].BroadcastService.ProcessJobs.AnonymousMethod__1d Normal
Unflagged 140224 152 Worker Thread <No Name> Normal
Unflagged 140792 157 Worker Thread <No Name> Normal
Unflagged 137116 0 Worker Thread <No Name> Normal
Unflagged 140776 111 Worker Thread <No Name> Normal
Unflagged 140784 0 Worker Thread [Thread Destroyed] Normal
Unflagged 140068 145 Worker Thread <No Name> Normal
Unflagged 139000 150 Worker Thread <No Name> Normal
Unflagged 140828 52 Worker Thread <No Name> Normal
Unflagged 137752 146 Worker Thread <No Name> Normal
Unflagged 140868 151 Worker Thread <No Name> Normal
Unflagged 141324 139 Worker Thread <No Name> Normal
Unflagged 140168 154 Worker Thread <No Name> Normal
Unflagged 141848 0 Worker Thread [Thread Destroyed] Normal
Unflagged 135544 153 Worker Thread <No Name> Normal
Unflagged 142260 140 Worker Thread <No Name> Normal
Unflagged 141528 142 Worker Thread <No Name> [In a sleep, wait, or join] Normal
Unflagged 141344 0 Worker Thread [Thread Destroyed] Normal
Unflagged 140096 136 Worker Thread <No Name> Normal
Unflagged 141712 134 Worker Thread <No Name> Normal
Unflagged 141688 147 Worker Thread <No Name> Normal
Cập nhật: Tôi đã kể từ khi được theo dõi thủ phạm xuống một System.Timers.Timer. Ngay cả khi bộ đếm thời gian này được gọi là một phương thức trống trên mỗi sự kiện đã trôi qua, nó vẫn tăng số lượng chuỗi logic vô thời hạn. Chỉ cần thay đổi bộ đếm thời gian sang DispatcherTimer đã khắc phục được sự cố.
Tôi bắt đầu xem xét tất cả các bộ hẹn giờ trong ứng dụng của mình sau khi nhìn thấy số lớn khi chạy !dumpheap -type TimerCallback
trong Windbg như đã đề cập trong this question.
Tôi vẫn muốn biết làm thế nào tôi có thể đã phát hiện điều này thông qua gỡ lỗi Windbg thay vì tắt tính năng/kiểm tra hiệu suất/phương pháp lặp lại dẫn tôi đến sửa chữa. I E. bất cứ điều gì mà có thể đã nói với tôi mà bộ đếm thời gian đã được tạo ra vấn đề.
Bạn có biết điều gì đang tạo ra chúng không và tại sao? –
Ứng dụng của tôi có rất nhiều phần chuyển động nên "lý do" sẽ là một số tác vụ nền khác nhau. Tôi đang cố gắng tìm nguồn gốc của sự gia tăng để tìm ra "cái gì". – DaveO