2008-09-12 25 views
8

Tôi vừa cài đặt Java 1.6_07 để tôi có thể thử lược tả bằng VisualVM. Nó cho tôi biết rằng ứng dụng của tôi đang chi tiêu 60% thời gian của mình trong sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.runKhoan xuống trong VisualVM

Làm cách nào để tìm hiểu những gì nó đang làm trong thời gian đó? Bao nhiêu thời gian nó chờ đợi một cái gì đó để gọi nó, hoặc làm cái gì khác? Cái gì đang gọi nó và nó gọi là gì? Tôi dường như không thể tìm thấy bất kỳ cách nào để đi sâu vào các cấp độ sâu hơn như có trong Quantify hoặc Perl profiler.

Trả lời

5

Tôi không có kinh nghiệm với VisualVM - nhưng hồ sơ của JRockit không cung cấp thông tin này; bạn có thể xem xét sử dụng nó thay thế.

Cập nhật: một câu hỏi với một danh sách các profilers java có thể được tìm thấy here

+2

Trên thực tế, tôi đã kết thúc bằng cách sử dụng đánh giá 10 ngày của jprofiler. Và kể từ khi tôi không thể thuyết phục ông chủ của tôi để chi tiêu $ 500, tôi sẽ được đốt cháy thông qua rất nhiều địa chỉ email giả mạo thời gian tới tôi cần phải làm bất kỳ hồ sơ. –

+1

Trình thu thập dữ liệu của JRockit, cuối cùng tôi sử dụng nó, có giấy phép phát triển/không sử dụng không tốn chi phí cho phép tối đa 30 phút sử dụng cho mỗi yêu cầu JVM; có lẽ điều đó có thể phù hợp hơn. –

+0

Nhiệm vụ của JRockit Kiểm soát giấy phép mới không có giới hạn thời gian như vậy. Nó miễn phí để sử dụng cho phát triển và đánh giá. – Tnilsson

3

Ứng dụng của bạn có sử dụng RMI trên TCP không? Nếu không, liệu có thể đây là một con Heisenbug, gây ra bởi việc thiết lập máy ảo? Tôi giả sử VisualVM phải sử dụng các cuộc gọi RMI để tìm ra những gì đang xảy ra trong JVM ....

+0

Tôi gặp vấn đề tương tự. –

+0

Tôi nghĩ rằng đây là nó là tốt, ứng dụng của tôi không sử dụng bất kỳ RMI ở tất cả và đang tạo ra một tải trọng lớn của Object [] trường hợp đang được sử dụng trong ObjectOutputStream. – parasietje

1

Tôi đã bắt đầu sử dụng the new VisualVM 1.2. Nó cho phép cấu hình CPU và khoan xuống bằng biểu đồ cuộc gọi. Hãy dùng thử.

1

Sử dụng 1.3.2 cũng thấy đây là báo cáo bị treo mà tôi đang truy cập. Trong 1.3.2 nếu bạn thực hiện một kết xuất chuỗi và tìm kiếm cuộc gọi này, bạn có thể thấy nơi nó nằm trong chuỗi cuộc gọi cho chuỗi đó. Không chắc chắn nếu Yuval F đã đề cập đến điều này hay cái gì khác. Tra cứu chuỗi cuộc gọi để xem những gì nó đang gọi và cứ thế, nhìn xuống để xem nó đang được gọi là gì và cứ thế.

Các vấn đề liên quan