Trong Java 8 Cập nhật 45 tuổi, thêm các tùy chọn này cho java
gọi:Điều gì gây ra thời gian quay và đồng bộ hóa lâu dài trong Java?
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintSafepointStatistics
-XX:PrintSafepointStatisticsCount=1
chỉ cho tôi thống kê như thế này:
vmop [threads: total initially_running wait_to_block] [time: spin block sync cleanup vmop] page_trap_count
3679.229: no vm operation [ 72 1 2 ] [ 6016 0 6016 0 0 ] 1
2015-05-22T11:25:27.519+0200: Total time for which application threads were stopped: 6.0168551 seconds, Stopping threads took: 6.0164099 seconds
Vấn đề ở đây là thời gian dài cho Stopping threads
. Trong ví dụ này, nó là 6 giây mà đã là một vấn đề cho ứng dụng của chúng tôi, nhưng tôi đã thấy thời gian thậm chí lớn hơn, trong một ví dụ (không có đăng nhập đầy đủ, mặc dù) lên đến gần một phút.
Thao tác VM (ở đây: no vm operation
) thay đổi. Tôi cũng đã thấy, ví dụ RevokeBias
, G1IncCollectionPause
hoặc GCG_Operation
. Ngoài ra, page_trap_count
dường như không liên quan. Tôi đã thấy các ví dụ mà nó là 0, và những người khác mà nó là 2. Nhất quán, mặc dù, là thời gian luôn luôn được phản ánh trong các giá trị của spin
và sync
.
Tôi đang tìm kiếm giải thích chi tiết về các giá trị thời gian spin
và sync
, nhưng chủ yếu là tôi quan tâm đến lý do tại sao điều này xảy ra và những gì tôi có thể làm. Tôi không biết bất cứ điều gì 'ác' trong cấu hình của chúng tôi. Có rất nhiều lõi chán và bộ nhớ không sử dụng trên máy, chúng tôi đang chạy Java tinh khiết (không có JNI), và chúng tôi không biết về bất kỳ sự đồng bộ hóa quá mức nào trong mã của chúng tôi.
Bạn có thể cung cấp thêm chi tiết về trường hợp sử dụng cụ thể của bạn để mọi người có thể biết cách trợ giúp. –
Trên thực tế, tôi thấy điều này không chỉ với một trong các ứng dụng của chúng tôi, nhưng tôi thấy nó trên bảng. Vì vậy, không thực sự là một trường hợp sử dụng cụ thể. Nếu tôi biết những gì cần tìm, tôi có thể đi săn tìm những điểm tương đồng. Tôi nghi ngờ, tuy nhiên, nhiều người có cùng một vấn đề nhưng vẫn chưa nhận thấy. Việc ghi nhật ký 'Ngừng luồng đã lấy:' điều đó chỉ tôi đến nó là khá mới. – malamut