tôi có các loại dây chuyền sản lượng gc tôi:
44871.602: [GC-- [PSYoungGen: 342848K->342848K(345600K)] 961401K->1041877K(1044672K), 0.1018780 secs] [Times: user=0.16 sys=0.00, real=0.11 secs]
Tôi đọc câu trả lời Yishai và nó sẽ có ý nghĩa, nhưng tôi muốn nhìn thấy nó cho bản thân mình trong mã nguồn Java GC, khi JVM in "-" trong nhật ký GC và tại sao.
Bởi vì kiến thức của tôi "Parallel Scavenge" của Young Gen là GC dừng lại, nên có không thể là bất kỳ đối tượng nào được tạo song song với GC này. (Xem https://blogs.oracle.com/jonthecollector/entry/our_collectors)
Bạn có thể tìm thấy điều này trong mã nguồn jdk (xem http://hg.openjdk.java.net/jdk7/jdk7) g1CollectedHeap.cpp và psScavenge.cpp
jdk7-ee67ee3bd597/hotspot/src/share$ egrep -h -A2 -B5 -r '"\-\-"' *
# G1 Collector
if (evacuation_failed()) {
remove_self_forwarding_pointers();
if (PrintGCDetails) {
gclog_or_tty->print(" (to-space overflow)");
} else if (PrintGC) {
gclog_or_tty->print("--");
}
}
--
# Parallel Scavenge Collector
promotion_failure_occurred = promotion_failed();
if (promotion_failure_occurred) {
clean_up_failed_promotion();
if (PrintGC) {
gclog_or_tty->print("--");
}
}
Lý do GC-- với Parallel nhặt rác Collector
GC trẻ gặp phải lỗi quảng cáo (xem http://mail.openjdk.java.net/pipermail/hotspot-gc-use/2010-March/000567.html):
Một thất bại khuyến mãi là một scavenge mà không thành công vì không có đủ không gian trong gen cũ để làm tất cả các chương trình khuyến mãi cần thiết. Các scavenge là bản chất unwound và sau đó một đầy đủ STW nén của toàn bộ đống được thực hiện.
'Không đủ không gian' không nhất thiết có nghĩa rằng không có đủ không gian trong cũ, nhưng điều đó không gian cũ là nặng nề rời rạc (xem http://blog.ragozin.info/2011/10/java-cg-hotspots-cms-and-heap.html):
[ ...] không thể tìm thấy số lượng bộ nhớ liên tục nhất định để quảng bá đối tượng lớn cụ thể, mặc dù tổng số byte miễn phí đủ lớn.
Hai tùy chọn JVM có thể giúp bạn phân tích sự phân mảnh của bạn đống (xem http://blog.ragozin.info/2011/10/java-cg-hotspots-cms-and-heap.html):
-XX:+PrintPromotionFailure
-XX:PrintFLSStatistics=1
Lý do GC-- với G1 Collector
Một thất bại sơ tán với G1 là khi một khu vực người sống sót không có đủ không gian cho các đối tượng còn sống sót từ một khu vực trẻ.
Tôi không biết liệu Bộ thu G1 có phản ứng với sự thất bại sơ tán với toàn bộ GC hay không.
Với dấu thời gian và số lượng bộ nhớ tôi đoán nó đã thực hiện một bộ sưu tập rác nhưng mất bộ nhớ sẵn có (vì các đối tượng khác được tạo song song) – Yishai
Yishai, cảm ơn, điều đó có ý nghĩa rất nhiều. Không chắc chắn nếu nó đúng hay không, nhưng rất tốt có thể được. – RodeoClown
Bạn muốn đặt câu trả lời trong câu trả lời để tôi có thể bỏ phiếu/chấp nhận nó? :) – RodeoClown