मैं जावा में लिखी गई एक एपीआई का परीक्षण कर रहा हूं, जो नेटवर्क पर प्राप्त संदेशों को संसाधित करने में विलंबता को कम करने की उम्मीद है। इन लक्ष्यों को प्राप्त करने के लिए, मैं उपलब्ध विभिन्न कचरा कलेक्टरों के साथ खेल रहा हूं।जावा का सीरियल कचरा कलेक्टर अन्य कचरा कलेक्टरों से कहीं बेहतर प्रदर्शन कर रहा है?
1) सीरियल: -XX: + UseSerialGC
2) समानांतर: -XX: + UseParallelOldGC
मैं चार विभिन्न तकनीकों, जो कचरा संग्रहण नियंत्रित करने के लिए निम्नलिखित झंडे का उपयोग कोशिश कर रहा हूँ
3) समवर्ती: -XX: + UseConcMarkSweepGC
4) समवर्ती/वृद्धिशील: -XX: + UseConcMarkSweepGC -XX: + CMSIncrementalMode -XX: + CMSIncrementalPacing
मैंने पांच घंटे के दौरान प्रत्येक तकनीक को चलाया। मैंने समय-समय पर कचरा इकट्ठा करने में व्यतीत कुल समय को पुनः प्राप्त करने के लिए प्रबंधन Factory.getGarbageCollectorMXBeans() द्वारा प्रदान किए गए GarbageCollectorMXBean की सूची का उपयोग किया।
मेरे परिणाम? ध्यान दें कि "विलंबता" यहां "समय की राशि है कि मेरा आवेदन + एपीआई नेटवर्क से हटाए गए प्रत्येक संदेश को संसाधित करने में व्यतीत करता है।"
सीरियल: 78 9 जीसी कुल 130 9 एमएस की घटनाएं; औसत विलंबता 47.45 हमें, औसत विलंबता 8.704 हमें, अधिकतम विलंबता 1197 हमें
समांतर: 1715 जीसी कार्यक्रम कुल 122518 एमएस; औसत विलंबता 450.8 हमें, औसत विलंबता 8.448 हमें, अधिकतम विलंबता 8292 हमें
समवर्ती: 4629 जीसी घटनाएं कुल 11622 9 एमएस; औसत विलंबता 707.2 हमें, औसत विलंबता 9.216 हमें, अधिकतम विलंबता 9151 हमें
वृद्धिशील: 200663 एमएस की कुल 5066 जीसी घटनाएं; औसत विलंबता 515.9 हमें, औसत विलंबता 9.472 हमें, अधिकतम विलंबता 1420 9 हमें
मुझे ये परिणाम इतने असंभव होने के लिए मिलते हैं कि वे बेतुका पर सीमा बनाते हैं। क्या किसी को पता है कि मुझे इस तरह के नतीजे क्यों हो सकते हैं?
ओह, और रिकॉर्ड के लिए, मैं जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वीएम का उपयोग कर रहा हूं।
क्या आप मानते हैं कि समानांतर में दो चीजों को निष्पादित करना एक चीज़ के बाद एक चीज़ को निष्पादित करने से तेज़ है? – aioobe
मुझे उम्मीद है कि अधिकतम विलंबता – jcoder
हालांकि बढ़ जाएगी, तो, आपके अलग-अलग परिदृश्यों में उन 5 घंटों में वास्तव में कितने संदेश संसाधित किए गए थे? क्या आप एक धागा चला रहे हैं, या बहुप्रचारित? – pap