java song मिश्रित संग्रह शुरू करने से पहले जी 1 जीसी युवा पीढ़ी को क्यों सिकुड़ते हैं?



हिंदी गाना बॉबी देओल (1)

स्लाइड नंबर पर आपकी क्वेरी के लिए आपको जवाब मिल सकता है: 56

युवा पीढ़ी 20X का एक पहलू से सिकुड़ गई

इसलिए 10 एक्स के कारखाने से सिकुड़ते हुए आश्चर्यचकित नहीं है

G1GC ट्यूनिंग के लिए सुझावों पर मोनिका बेकविथ द्वारा InfoQ लेख से:

पूर्ण जीसी को नर्सरी / युवा जन को न्यूनतम न्यूनतम (कुल जावा ढेर का 5%) न्यूनतम करने से बचा जा सकता था

चूंकि आपने युवा जन आकार स्पष्ट रूप से सेट नहीं किया है, डिफ़ॉल्ट मान है

-XX:G1NewSizePercent=5

युवा पीढ़ी के आकार के लिए न्यूनतम के रूप में उपयोग करने के लिए ढेर का प्रतिशत निर्धारित करता है।

तो अपने विराम का समय लक्ष्य का सम्मान करने के लिए

-XX:MaxGCPauseMillis=1000 

युवा जन कुल मिलाकर 5% तक ढेर कर सकते हैं।

मुझे https://groups.google.com/a/jclarity.com/forum/#!msg/friends/hsZiz6HTm9M/klrRjBclCwAJ पर G1GC के बारे में एक अच्छा Google समूह लेख मिला है

अगर जी 1 ने विराम के समय लक्ष्य की भविष्यवाणी की तो लक्ष्य विराम के समय के लक्ष्य से बड़ा है, फिर युवा पीढ़ी को छोटा करना है, लेकिन वर्तमान जावा ढेर के आकार के G1NewSizePercent से अधिक नहीं, (अधिकतम आकार नहीं)। फिर, समग्र जावा ढेर जीसीटीईएमआरटीओ के मूल्य की तुलना में मूल्य कंप्यूटेड जीसी टाइम अनुपात के आधार पर बढ़ेगा (या सिकुड़)।

नोट: G1NewSizePercent , और G1MaxNewSizePercent NewSize या MaxNewSize के साथ भ्रमित नहीं होना चाहिए।

G1NewSizePercent और G1MaxNewSizePercent क्रमशः कम और ऊपरी बाध्य है, जी 1 के आकार में छोटे या बड़े बड़े आकार के आकार के आकार के अनुसार।

एक अलग नोट पर, आपने कई पैरामीटर कॉन्फ़िगर किया है जो बिना आवश्यक जरूरी साइन जी 1 जीसी हो सकता है ठीक है अगर ज्यादातर डिफ़ॉल्ट पैरामीटर डिफ़ॉल्ट मानों पर सेट किए गए हैं। अधिक जानकारी के लिए इस एसई प्रश्न को देखें।

जावा 7 (जेडीके 7) कचरा संग्रह और जी 1 पर प्रलेखन

सारांश में : विराम के समय के लक्ष्य के आधार पर, युवा जन सिकुड़ जाएगा। यदि आप वास्तव में कम मूल्य के लिए युवा जीन को सिकुड़ने के बारे में चिंतित हैं, तो कॉन्फ़िगर करें -XX:G1NewSizePercent लेकिन मैं इसे लंबे समय तक नहीं -XX:MaxGCPauseMillis मिले

संपादित करें:

जी 1 जीसी एर्गोनॉमिक्स पेज से,

यह विशिष्ट है कि ढेर के आकार को हिलना होगा क्योंकि कचरा कलेक्टर प्रतिस्पर्धी लक्ष्यों को पूरा करने की कोशिश करता है। यह तब भी सच है जब आवेदन स्थिर स्थिति तक पहुंच गया हो । एक थ्रूपुट लक्ष्य प्राप्त करने के दबाव (जिसके लिए बड़े ढेर की आवश्यकता हो सकती है) अधिकतम विराम के समय और एक न्यूनतम पदचिह्न (जो दोनों को एक छोटा ढेर की आवश्यकता हो सकती है) के लिए लक्ष्यों के साथ प्रतिस्पर्धा करता है।

जब G1 यह तय करता है कि मिश्रित संग्रह करना शुरू करने की आवश्यकता है, तो यह आक्रामक रूप से हमारे ईडन अंतरिक्ष को 10 जी से 1 जी तक घटा देता है।

{Heap before GC invocations=294 (full 0):
 garbage-first heap   total 20480000K, used 18304860K [0x00000002de000000, 0x00000002de804e20, 0x00000007c0000000)
  region size 8192K, 1363 young (11165696K), 11 survivors (90112K)
 Metaspace       used 37327K, capacity 37826K, committed 38096K, reserved 1083392K
  class space    used 3935K, capacity 4081K, committed 4096K, reserved 1048576K
2016-03-31T20:57:31.002+0000: 7196.427: [GC pause (G1 Evacuation Pause) (young)
Desired survivor size 717225984 bytes, new threshold 1 (max 1)
- age   1:   41346816 bytes,   41346816 total
 7196.427: [G1Ergonomics (CSet Construction) start choosing CSet, _pending_cards: 144693, predicted base time: 48.88 ms, remaining time: 951.12 ms, target pause time: 1000.00 ms]
 7196.427: [G1Ergonomics (CSet Construction) add young regions to CSet, eden: 1352 regions, survivors: 11 regions, predicted young region time: 20.72 ms]
 7196.427: [G1Ergonomics (CSet Construction) finish choosing CSet, eden: 1352 regions, survivors: 11 regions, old: 0 regions, predicted pause time: 69.60 ms, target pause time: 1000.00 ms]
 7196.494: [G1Ergonomics (Mixed GCs) start mixed GCs, reason: candidate old regions available, candidate old regions: 789 regions, reclaimable: 4703761904 bytes (22.43 %), threshold: 5.00 %]
, 0.0673540 secs]
   [Parallel Time: 60.1 ms, GC Workers: 18]
      [GC Worker Start (ms): Min: 7196427.8, Avg: 7196428.1, Max: 7196428.2, Diff: 0.4]
      [Ext Root Scanning (ms): Min: 7.3, Avg: 7.5, Max: 7.7, Diff: 0.4, Sum: 134.2]
      [Update RS (ms): Min: 28.2, Avg: 28.8, Max: 29.9, Diff: 1.7, Sum: 518.4]
         [Processed Buffers: Min: 41, Avg: 57.7, Max: 80, Diff: 39, Sum: 1039]
      [Scan RS (ms): Min: 0.1, Avg: 0.2, Max: 0.5, Diff: 0.4, Sum: 3.7]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
      [Object Copy (ms): Min: 22.1, Avg: 23.1, Max: 23.4, Diff: 1.3, Sum: 416.2]
      [Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
         [Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 18]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 2.5]
      [GC Worker Total (ms): Min: 59.5, Avg: 59.7, Max: 60.0, Diff: 0.5, Sum: 1075.1]
      [GC Worker End (ms): Min: 7196487.7, Avg: 7196487.8, Max: 7196487.9, Diff: 0.2]
   [Code Root Fixup: 0.2 ms]
   [Code Root Purge: 0.0 ms]
   [Clear CT: 1.9 ms]
   [Other: 5.2 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 0.5 ms]
      [Ref Enq: 0.0 ms]
      [Redirty Cards: 0.5 ms]
      [Humongous Register: 0.2 ms]
      [Humongous Reclaim: 0.1 ms]
      [Free CSet: 2.3 ms]
   [Eden: 10.6G(10.6G)->0.0B(848.0M) Survivors: 88.0M->152.0M Heap: 17.5G(19.5G)->7128.3M(19.5G)]
Heap after GC invocations=295 (full 0):
 garbage-first heap   total 20480000K, used 7299344K [0x00000002de000000, 0x00000002de804e20, 0x00000007c0000000)
  region size 8192K, 19 young (155648K), 19 survivors (155648K)
 Metaspace       used 37327K, capacity 37826K, committed 38096K, reserved 1083392K
  class space    used 3935K, capacity 4081K, committed 4096K, reserved 1048576K
}
 [Times: user=1.09 sys=0.00, real=0.07 secs]
2016-03-31T20:57:31.070+0000: 7196.495: Total time for which application threads were stopped: 0.0699324 seconds, Stopping threads took: 0.0003462 seconds

यह 60 या उससे अधिक संग्रह के लिए 10-11 जी ईडन के साथ चल रहा है।

यहां उचित JVM जीसी पैरामीटर हैं जो हम साथ चल रहे हैं

-Xms20000m -Xmx20000m
-XX:+UseG1GC 
-XX:G1RSetUpdatingPauseTimePercent=5 
-XX:MaxGCPauseMillis=1000 
-XX:GCTimeRatio=99 
-XX:InitiatingHeapOccupancyPercent=35 
-XX:MaxTenuringThreshold=1 
-XX:G1ConcRefinementThreads=6 
-XX:ConcGCThreads=18 
-XX:ParallelGCThreads=18

-XX:+PrintGCDetails"
-XX:+PrintGCDateStamps"
-XX:+PrintHeapAtGC"
-XX:+PrintTenuringDistribution"
-XX:+PrintGCApplicationStoppedTime"
-XX:+PrintPromotionFailure"
-XX:+PrintAdaptiveSizePolicy"

इस प्रस्तुति के पेज 55 के मुताबिक, इसे ईडन का आकार बदलने की जरूरत है ताकि अधिकतम पीज़ लक्ष्य पूरे ढेर के लिए ही हो, न कि नई पीढ़ी के लिए। कलेक्टर इतने आक्रामक क्यों हैं?

औसत युवा पीढ़ी के विराम के समय 50 ग्राम के बीच हैं जो 10 जी के ढेर के आकार के लिए हैं। यदि प्रस्तुति सही है (मुझे बयान का समर्थन करने के लिए कुछ भी नहीं मिला है), मैं आधे (20g हीप) से सिकुड़ते हुए उम्मीद करता हूं, 10x नहीं।





g1