2013-09-27 199 views
9

Tôi đang chơi với mới Java Mission Control Profiler sắp đến với Java 7u40 và tôi không thể làm cho nó phân bổ hồ sơ và thu thập số liệu thống kê đối tượng. Không có vấn đề gì tôi làm, tôi không thể nhìn thấy bất kỳ số liệu thống kê trong bộ nhớ ->Thống kê đối tượng cửa sổ.Java Mission Control Heap Profile

Lệnh sau bắt đầu bộ sưu tập:

jcmd <pid> JFR.start duration=60s settings=profile filename=alloc-prof.jfr 

Các Java Mission Control documentation không đề cập đến bất kỳ tùy chọn cụ thể để cho phép đối tượng profiling. Tôi đã cố gắng tạo tiểu sử của riêng mình và đặt:

<flag name="heap-statistics-enabled" label="Heap Statistics">true</flag> 
    <flag name="allocation-profiling-enabled" label="Allocation Profiling">true</flag> 

Nhưng vẫn không có Thống kê đối tượng được thu thập.

Trả lời

10

Sử dụng trình quản lý mẫu có sẵn trong Kiểm soát nhiệm vụ.

Đi tới Windows -> Trình quản lý mẫu và nhập mẫu và kiểm tra Thống kê heap và Cấu hình phân bổ, xuất nó. Làm xong!

Nếu bạn muốn chỉnh sửa tệp jfc theo cách thủ công, có thể tốt khi biết các phần tử bên trong phần tử điều khiển không được JVM đọc, tức là phần tử cờ, Chúng được JMC sử dụng để sửa đổi các tham số bên ngoài yếu tố điều khiển (một với các thuộc tính điều khiển)

một chỉnh sửa thủ công đòi hỏi bạn phải sửa đổi các:

bộ java/object_alloc_in_new_TLAB kích hoạt để đúng

bộ java/object_alloc_outside_TLAB kích hoạt để đúng

đặt vm/gc/detail/object_count được bật thành true

Lưu ý, có hai sự kiện đối tượng, với object_count_after_gc bạn sẽ tăng số lần GC. Nếu bạn chọn cái ở trên thay vào đó, bạn sẽ nhận thêm một GC cho mỗi đoạn ghi âm (thường là đủ)

+1

Cảm ơn! Tôi sẽ thử tùy chọn Xuất trước tiên. –

+0

@ kire-haglin Cảm ơn bạn đã phản hồi chi tiết, rất hữu ích! Có thêm tài liệu về chính xác 'object_count' và' object_count_after_gc' làm và cụm từ 'everyChunk' có nghĩa là gì không? Tức là, làm cả hai gây ra một _additional_ GC và nếu như vậy, tại sao? Và một "đoạn ghi âm" là gì? – Hbf

+1

Bạn có thể nghĩ một đoạn ghi âm dưới dạng tệp nhật ký. Với _period = "everyChunk" _ sự kiện được viết khi "tệp nhật ký" được xoay. Điều này đảm bảo rằng bạn có ít nhất một sự kiện như vậy cho mỗi tệp ghi (được tạo thành từ một hoặc nhiều khối bản ghi). Chỉ _object_count_ thêm một GC bổ sung. –