2013-09-01 20 views
15

Khi định cấu hình thời gian CPU của ứng dụng bằng VisualVM, người ta có thể thấy tab "Gọi cây" sau khi chụp nhanh. Nhưng trong trường hợp của tôi, cây gọi chỉ hiển thị một số lớp và phương thức RMI TCP, nhưng không có lớp đơn nào của ứng dụng của tôi.Làm thế nào để hiển thị cây cuộc gọi trong VisualVM?

Làm cách nào để hiển thị cây cuộc gọi chính xác?

enter image description here

Trả lời

9

khả năng

  1. Các Profiler thiết lập được trừ lớp học của bạn. Thay đổi các loại trừ trong cài đặt Profiler.
  2. Ứng dụng của bạn không hoạt động trong khi hồ sơ đang chạy. Đính kèm lược tả sau đó làm cho chương trình thực thi mã bạn muốn cấu hình.
  3. Bạn có thể đang lược tả sai JVM. RMI làm cho nó khá dễ dàng để gọi vào một JVM khác. Có lẽ bạn cần phải mô tả phía bên kia của kết nối RMI đó.

Có hộp kiểm "Cài đặt" trên tab Hồ sơ. Nếu bạn đánh dấu vào ô Cài đặt, một bảng khác sẽ hiển thị cho phép bạn định cấu hình các lớp mà trình thu thập thông tin thu thập dữ liệu.

Đây là ảnh chụp màn hình. screeshot of jvisualvm with Profiler "Settings" box checked.

+0

Cảm ơn bạn đã cài đặt gợi ý. Nếu tôi nhấp vào hộp kiểm, tôi sẽ thấy các lớp đã được lược tả, nhưng tôi không được phép thay đổi chúng. Các hộp văn bản không thể chỉnh sửa được. Làm thế nào tôi có thể chỉnh sửa chúng? –

+0

OK, đã hiểu. Đã phải ngừng lược tả để chỉnh sửa cài đặt. Sau khi tôi đặt đúng lớp, tôi có thể thấy cây gọi chính xác cho ứng dụng của tôi. –

0

Cây cuộc gọi chỉ cho thấy chủ đề mà thực sự chạy trong lấy mẫu/hồ sơ (không được ngủ tất cả các thời gian) và có dấu vết ngăn xếp đã không được lọc ra hoàn toàn. Bộ lọc được thiết lập trước khi bắt đầu lấy mẫu hoặc lược tả. Khi bật hộp kiểm “cài đặt” ở góc trên bên phải, bạn có thể thiết lập bộ lọc. Trong trường hợp lấy mẫu, bạn cũng có thể thiết lập tần số lấy mẫu là một sự cân bằng giữa hiệu suất và rủi ro để giám sát trạng thái đang chạy của một luồng. Nhưng nó có thể là ứng dụng của bạn đã thực sự nhàn rỗi trong quá trình lược tả. Sau đó, các chủ đề duy nhất bạn thấy là các chủ đề RMI duy trì kết nối với VisualVM.

2

Như @Holger cho biết, các ảnh chụp nhanh của profiler/sampler được cho là chỉ hiển thị các chuỗi đang chạy. Tuy nhiên, tôi tìm thấy bằng kinh nghiệm cá nhân mà các ảnh chụp nhanh lấy mẫu đôi khi hiển thị nhiều chủ đề hơn mà lược tả.

Hơn nữa, trình lấy mẫu của VisualVM cho phép bạn xem Thời gian CPU của mỗi luồng trong thời gian thực (không chụp ảnh), bất kể nó đang chạy, đang ngủ, chờ hay giám sát.

Tôi không hiểu tại sao điều này xảy ra, vì việc lập cấu hình phải chính xác hơn so với lấy mẫu (see here the difference) nhưng thực tế.

Tất cả trong tất cả, tôi khuyên bạn nên dùng thử mẫu và xem nó có hoạt động hay không.

+0

Cảm ơn bạn. Đúng, lấy mẫu đã giúp và lấy mẫu tôi có thể thấy cây gọi mà tôi muốn xem. –