2012-05-14 33 views
5

Tôi cho rằng câu hỏi có liên quan chặt chẽ đến this nhưng đã đóng và giải pháp dường như không rõ ràng đối với tôi.Tại sao hồ sơ VisualVM Profiler ứng dụng giao diện điều khiển Scala của tôi không?

Tôi đang cố gắng sử dụng VisualVM để lập hồ sơ một giao diện điều khiển ứng dụng Scala của tôi. Tôi làm điều này bằng cách bắt đầu VisualVM, bắt đầu ứng dụng Scala của tôi, mở nút của nó trong VisualVM, đi đến tab "Profiler" và nhấn "CPU". Nút này chuyển sang màu xám trong một thời gian (trong khi trạng thái không bao giờ thay đổi bất kỳ thứ gì từ "không hoạt động"), sau đó quay lại hoạt động nhưng không có dữ liệu lược tả nào xuất hiện.

Ứng dụng thực hiện đọc một số tập tin, xử lý dữ liệu (mất khoảng một phút), đầu ra dữ liệu xuất ra và thoát. Tôi cũng đã thử thêm Thread.sleep(60000) vào đầu và cuối chương trình để đảm bảo đủ thời gian để VisualVM nắm bắt và thực hiện công việc, không có gì thay đổi.

Không giống với câu hỏi có liên quan tôi đã liên kết với tôi không khởi động ứng dụng của tôi từ Eclipse hoặc bất cứ điều gì khác - Tôi sử dụng sau dòng lệnh để khởi động nó:

java -classpath myapp.jar:lib/* MyApp.Main 

tất cả các thư viện (bao gồm cả scala-library.jar) được đặt trong lib/. Ứng dụng hoạt động như mong đợi.

Cập nhật:

  • Tôi đã thử YourKit Java Profiler 11.0.2 và nó không thành công với AttachNotSupportedException.
  • Tôi đã quản lý với YourKit theo số attaching the agent manually.
  • Có vẻ như đáng để nhấn mạnh rằng tôi không chạy ứng dụng từ một IDE (hoặc công cụ xây dựng) cũng như tôi đã sửa đổi bất kỳ tùy chọn JVM nào nhưng đường dẫn lớp. Theo tôi hiểu vấn đề này dường như phụ thuộc vào phiên bản JVM và các vấn đề về người dùng/quyền và. Mục tiêu là để tìm ra cơ chế thực tế của vấn đề và cách để cấu hình tất cả mọi thứ để làm việc.

Các phiên bản của phần mềm được sử dụng:

  • YourKit Java Profiler 11.0.2
  • VisualVM 1.3.4
  • SBT 0.12.3 (để xây dựng nhưng không phải để chạy (Tôi đã thử cả hai thực sự))
  • Scala 2.9.2
  • Oracle Java 1.7.0_04-B20
  • Xubuntu 12.04 Linux 32-bit i386
  • Linux kernel 3.2.0-24-generic-pae
+0

Scala tạo một số hướng dẫn JVM khá thú vị. Có thể JVisualVM đang tìm kiếm các mẫu được tạo bởi javac JDK, và đang bị nhầm lẫn bởi các mẫu được tạo bởi scalac. – joev

Trả lời

3

Tôi đã sử dụng VisualVM để cấu hình một ứng dụng Scala hai ngày trước đây, vì vậy tôi tin rằng nó sẽ làm việc. Dưới đây là gợi ý của tôi:

  • Đi ra YourKit ra khỏi phương trình và chạy mọi thứ mà không có nó cho một starter
  • Đi ra scala ra khỏi phương trình, hãy thử profiling một hello world Java mà không while (true) { Thread.sleep(10000); }
  • Nhận để làm việc sau đó đưa lại Scala, sau đó đặt lại YourKit.

Chỉnh sửa: dựa trên đầu vào của bạn, tôi đề nghị đặt rõ ràng kết nối JMX từ xa. Bạn có thể bắt đầu java bằng các tùy chọn sau:

-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=20000 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

Sau đó, trong VisualVM, thêm kết nối JMX vào localhost:20000.

+0

Tab "Profiler" thậm chí không xuất hiện trong VisualVM cho đơn giản như vậy (tôi cũng đã thử ngủ lâu hơn) ứng dụng Java (cũng như các tab "Sampler" hoặc "Chủ đề"): chỉ "Tổng quan" và "Màn hình" có sẵn . – Ivan

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