Làm cách nào để xem bộ thu gom rác (CMS, Song song, v.v.) đang chạy bằng cách xem nhật ký gc cho bộ sưu tập nhỏ và lớn? Tôi không có quyền truy cập vào các tùy chọn dòng lệnh được thiết lập để java (sysadm cho máy chủ ứng dụng sẽ không cho tôi thấy chúng). Tôi có nhật ký gc khá chi tiết.Làm cách nào để biết bộ thu gom rác đang chạy bằng cách xem nhật ký gc?
Trả lời
Định dạng chính xác của thư GC phụ thuộc vào phiên bản JVM và cài đặt JVM. Bạn có thể xem các mẫu tại Oracle tutorial about GC tuning.
DefNew
là trình thu thập mặc định. Đó là một trong hai nối tiếp hoặc song song, cái nào được chọn phụ thuộc, một lần nữa, trên phiên bản/cài đặt JVM. Bạn có thể xem cài đặt mặc định của mình trong JDK 6 bằng cách sử dụng java -XX:+PrintCommandLineFlags -version
. Trên hệ thống của tôi, nó in:
-XX:MaxHeapSize=1073741824 -XX:ParallelGCThreads=4 -XX:+PrintCommandLineFlags -XX:+UseParallelGC
có nghĩa là GC song song là DefNew
cho tôi. Bạn có thể kiểm tra điều này SO question và một trong các tài liệu tham khảo câu trả lời của nó this table, có thể nó sẽ giúp bạn.
CẬP NHẬT Mặc định Cũ Gen GC trong JDK 6 là ParallelOldGC, xem this enlightening pdf. Đặc biệt, bạn có thể thay đổi GC cũ sang phiên bản quét quét đồng thời mới hơn bằng cách sử dụng tùy chọn JV2 -XX:+UseConcMarkSweepGC
JVM.
Bạn có thể tìm các mẫu nhật ký GC cho tất cả các thuật toán thu thập rác của HotSpot JVM trong this article.
-XX:+PrintGCDetails
phải được bật để xem mức chi tiết trong nhật ký GC.
trích dẫn cuốn sách "Java Hiệu suất" bởi Charlie Hunt, tên của không gian thế hệ trẻ được sử dụng trong các bản ghi GC thay đổi với GC sử dụng:
PSYoungGen => ParallelGC
ParNew => CMS
DefNew => SerialGC
Tôi không chắc chắn về G1
- 1. "GC--" nghĩa là gì trong nhật ký thu gom rác thải java?
- 2. Khi nào bộ thu gom rác net hoạt động?
- 3. Buộc thu gom rác để chạy trong R với lệnh gc()
- 4. Thông báo thu gom rác thải?
- 5. Thu gom rác trong Perl
- 6. Chạy GC. Thu thập đồng bộ
- 7. Thông báo Thu gom Rác Bỏ lỡ
- 8. đế và bộ thu gom rác Đi
- 9. Thu gom rác trễ?
- 10. Thu gom rác thủ công bằng Python
- 11. Xoay tệp nhật ký thu gom rác (loggc) với logrotate không hoạt động đúng cách
- 12. JRuby - Cách khởi động bộ thu gom rác?
- 13. Khi nào để thu gom rác
- 14. Làm thế nào tôi có thể xem java thu gom rác nào đang sử dụng
- 15. Hiệu quả của bộ thu gom rác .NET
- 16. Bộ thu gom rác có gọi là Dispose() không?
- 17. .NET có giống như nhật ký thu gom rác của Java không?
- 18. Buộc thu gom rác của mảng, C#
- 19. Tại sao Ada không có bộ thu gom rác?
- 20. Có một JVM thiếu bộ thu gom rác không?
- 21. Bộ thu gom rác cho thế hệ trẻ
- 22. Tôi có thể thử nghiệm thu gom rác bằng cách nào?
- 23. Đối tượng COM này có bị thu gom rác không?
- 24. Buộc thu gom rác thải
- 25. Khi nào đối tượng thu gom rác trong python?
- 26. Tiêu chí để kích hoạt thu gom rác trong .Net
- 27. Bộ thu gom rác nối tiếp của Java hoạt động tốt hơn nhiều so với các bộ thu gom rác khác?
- 28. Làm thế nào tôi có thể xác định đối tượng nào đang được thu thập bởi bộ thu gom rác?
- 29. Bộ thu gom rác cho đa lõi llvm?
- 30. Thu gom rác của các chuỗi ký tự
tôi đã xem tài liệu này nhưng tôi không thể kết nối ví dụ DefNew, PSYoungGen hoặc ParOldGen với các nhà sưu tập cụ thể. Tôi có thể tìm thấy bảng này ở đâu? – user1329339
Bởi vì các thế hệ không được kết nối với các nhà sưu tập cụ thể. Chỉ có một. Bạn cần đọc về mô hình GC thế hệ - và chạy Visual VM: http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc.html – duffymo
@duffymo: Tôi hiểu rằng các thế hệ aren không kết nối với những người thu gom cụ thể. Sau khi cố gắng bản thân mình tôi nghĩ rằng tôi thấy rằng DefNew có nghĩa là Serial Collector, ParNew có nghĩa là CMS Collector và PSYoungGen có nghĩa là Parallel Collector trên thế hệ trẻ. Những gì tôi đang tìm kiếm là một bảng dịch cho tất cả các tùy chọn. – user1329339