2016-03-29 18 views
5

Tôi có một số điểm chuẩn JMH mà tôi đang cố phân tích. Tôi muốn kích hoạt tính năng ghi nhật ký GC để xem lượng rác được tạo ra, nhưng tôi không thể tìm ra cách vượt qua các đối số JVM. Tôi biết JMH chạy điểm chuẩn trong một JVM chia rẽ, vì vậy nó không phải là ngay lập tức rõ ràng với tôi làm thế nào để làm điều này. Tôi đang sử dụng SBT.Vượt qua các đối số JVM cho JMH

+0

JMH chuyển bất kỳ đối số nào được truyền cho nó. Bạn chỉ có thể thêm chúng vào dòng lệnh, –

Trả lời

7

Nếu tôi đọc tài liệu sbt-jmh đúng, nó chuyển các tùy chọn ứng dụng cho nhân viên JMH với jmh:run .... Vì vậy, có dòng lệnh JMH chấp nhận --jvmArgs "...", tôi sẽ cố gắng làm jmh:run --jvmArgs "-XX:+PrintGCDetails". Hoặc, như @apangin đề cập, hãy thêm @Fork(jvmArgsAppend = "-XX:+PrintGCDetails").

Nhưng đối với trường hợp sử dụng cụ thể của bạn - "xem có bao nhiêu rác được tạo" - có thể nên sử dụng trình lược tả GC đi kèm, được kích hoạt với -prof gc. Xem ví dụ tại JMHSample_35_Profilers.java#l71.

5

Sử dụng @Fork chú thích:

@Benchmark 
@Fork(jvmArgsAppend = "-XX:+PrintGCDetails") 
public void someBenchmark() { 
    ... 
} 

Lưu ý rằng đối số JVM truyền cho JMH cũng được tuyên truyền để chuẩn chia hai.

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