Trình thu gom rác mặc định cho Java 8


94

Trình thu gom rác mặc định cho Java 8 là gì?

Khi tôi kiểm tra JMX Beans, họ tiết lộ nó là bộ thu song song cho thế hệ mới và bộ thu nối tiếp cũ cho thế hệ cũ.

Câu trả lời:


128

Bộ thu gom rác mặc định:

  • Java 7 - GC song song
  • Java 8 - GC song song
  • Java 9 - G1 GC
  • Java 10 - G1 GC

80

Chọn bộ thu gom rác mặc định (trong số những thứ khác) được gọi là quy trình công thái học của JVM. Quá trình này phụ thuộc vào loại máy của bạn.

  • Đối với máy cấp máy chủ, được định nghĩa là máy có 2 bộ xử lý vật lý trở lên và 2 GB bộ nhớ vật lý trở lên (bất kể nền tảng), bộ thu gom rác mặc định là bộ thu gom song song (còn được gọi là bộ thu thập thông lượng).
  • Đối với máy lớp khách, được định nghĩa là nền tảng 32-bit trên Windows hoặc máy một bộ xử lý, bộ thu gom rác mặc định là bộ thu gom nối tiếp.

Vì thực tế tất cả các máy đều có 2 CPU trở lên, một máy thực tế luôn được JVM coi là cấp máy chủ. Đó là lý do tại sao bạn sẽ tìm thấy rất nhiều tài liệu tham khảo coi bộ thu gom song song là bộ thu gom rác mặc định.


54

Java có bốn loại trình thu gom rác (Lên đến phiên bản 10), nhưng sau khi phát hành ổn định java 11, nó sẽ có 5 loại. Đó là:-

  1. Bộ thu gom rác nối tiếp- S GC
  2. Bộ thu gom rác song song- P GC
  3. Bộ thu gom rác CMS- CMS GC
  4. G1 Bộ thu gom rác- G1 GC
  5. Công cụ thu gom rác Z- ZGC

Triển khai mặc định của GC trong java -

JVM GC

 Java 7 - P GC       
 Java 8 - P GC
 Java 9 - G1 GC
 Java 10- G1 GC
 Java 11- Z GC(I am not sure but it would be default GC of java 11)

Thêm chi tiết cho ZGC, vui lòng truy cập

http://openjdk.java.net/projects/zgc/

https://www.opsian.com/blog/javas-new-zgc-is-very-ex Fun/

Lưu ý: Nếu bạn muốn xác minh, GC nào hiện đang được JVM sử dụng, bạn có thể sử dụng lệnh sau để hiển thị GC mặc định: -

$ java -XX:+PrintCommandLineFlags -version 

Nếu bạn muốn thiết lập GC theo nhu cầu của mình, bạn có thể thực hiện việc này bằng lệnh sau. Ở đây tôi sẽ đặt G1 GC làm GC mặc định.

$ java -XX:+UseG1GC -XX:+PrintCommandLineFlags -version 

nhập mô tả hình ảnh ở đây

For more details , please visit 

https://javapapers.com/java/types-of-java-garbage-collectors/

https://alvinalexander.com/java/java-jvm-how-show-which-garbage-collector-running


Sẽ hữu ích để đề cập đến nguồn gốc của biểu đồ để biết thêm chi tiết
xagaffar

2
xin chào @xagaffar đây là url nguồn javapapers.com/java/types-of-java-garbage-collectors
Brajesh

1
@Brajesh Tôi không nghĩ ZGC là GC mặc định của JDK 11. Mở JDK wiki ( wiki.openjdk.java.net/display/zgc/Main ) cho biết "Sử dụng -XX: + UnlockExperimentalVMOptions -XX: + Tùy chọn UseZGC để bật ZGC. " điều đó có nghĩa là nó không phải là mặc định.
Ashish Kumar

Không, nó không phải là mặc định của JDK11. -XX: + UnlockExperimentalVMOptions -XX: + Sử dụng tùy chọnZGC để cho phép ZGC mở khóa ZGC
vsingh

1
Các sơ đồ của hình ảnh thực sự hữu ích để giải thích sự khác biệt giữa bộ thu gom rác "nối tiếp", "song song" và "đồng thời", nhưng nó thực sự vô lý với chín hình vuông màu này đối với bộ thu gom G1. Chúng có nghĩa là gì? Đề bài trở thành hình vuông?
Holger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.