मैं अपने आवेदन में एक अजीब घटना को देख रहा हूं। मैं ऑब्जेक्ट्स को एक सर्वर पर सबमिट करने के बाद हैशमैप में संग्रहीत करता हूं और प्रतिक्रिया मिलने पर उन्हें हटा देता हूं।जावा कचरा संग्रह प्रेरित लेटेंसी प्रदर्शन को प्रभावित करता है
मैंने हाल ही में चलने के बाद बहुत धीमी प्रदर्शन देखा। जांच करने पर, मैंने पाया कि स्मृति उपयोग 4 जीबी पर रहता है और फिर 1 जीबी से कम हो जाता है। मुझे संदेह है कि यह बहुत सारी वस्तुओं को साफ कर रहा है, यही कारण है कि प्रदर्शन इतना खराब हो जाता है।
तो सवाल यह है कि जावा को कचरा संग्रहण में इतनी देर क्यों ले रही है? यही कारण है कि ढेर भरने तक प्रतीक्षा करें और फिर कचरा संग्रह करें? इसे नियमित अंतराल पर कचरा इकट्ठा नहीं करना चाहिए।
हैश मैप में संग्रहीत वस्तुओं को उस समय सही बनाया जाता है, यह कि वे लंबे समय तक नहीं रहते हैं।
यह लिनक्स (आरएचईएल), ओरेकल जेवीएम हॉटस्पॉट 7. 64-बिट पर है। 4 कोर
java -jar -Xmx4g prog.jar
नोट:: यह कैसे अनुप्रयोग चलाने है मैं इस देखा है: Tuning garbage collections for low latency लेकिन अब के लिए मैं समझने के लिए क्यों जी सी में किक करने इतने लंबे समय ले जा रहा है करना चाहते हैं?
क्या झंडे हैं आप प्रोग्राम के साथ चल रहे हैं? – FDinoff
असल में, जीसी शुरू नहीं होता है जब तक ढेर लगभग पूरा हो जाता है। सटीक ट्रिगर जेवीएम संस्करण और सेटिंग्स के आधार पर अलग-अलग होते हैं, लेकिन यह आमतौर पर बड़े जीसी को बहुत कम बनाम छोटे जीसी करने के लिए समग्र रूप से अधिक कुशल होता है। हालांकि, जैसा कि आपने ध्यान दिया है, यह विलंबता के लिए आदर्श नहीं है। यदि आप न्यूनतम विलंबता चाहते हैं तो आपको इसके लिए ट्यून करना होगा। (या उपलब्ध कुछ समवर्ती जीसी कार्यान्वयन में से एक पाएं।) –
@FDinoff डिफ़ॉल्ट के अलावा कोई झंडे नहीं। मूल रूप से, जावा -jar prog.jar। –