2016-01-29 10 views
6

के आकार की गणना करने का प्रयास करते समय 1.000 ऑब्जेक्ट संदर्भों की कॉन्फ़िगर की गई सीमा तक पहुंच गई थी, मेरे पास एक जिप्स्टर प्रोजेक्ट है और मैंने कुछ इकाइयां जोड़ दी हैं।
मेरे सेवाओं क्योंकि यह चेतावनी संदेश बहुत धीमी गति से कर रहे हैं: वस्तु ग्राफ के आकार की गणना करने का प्रयास करतेऑब्जेक्ट ग्राफ़

1,000 वस्तु संदर्भ के लिए कॉन्फ़िगर किया गया सीमा तक पहुँच गया था। आकार का संचालन जारी रहता है तो गंभीर प्रदर्शन गिरावट हो सकती है। इसे कैशमेंजर या कैश < आकारऑफ पॉलिसी> तत्व maxDepthExceededBehavior को "निरस्त करने" या @IgnoreSizeOf टिप्पणियों के साथ स्टॉप पॉइंट जोड़ने से बचा जा सकता है। यदि प्रदर्शन गिरावट कॉन्फ़िगर की गई सीमा पर कोई समस्या नहीं है, तो CacheManager या कैश < आकार OfPolicy> तत्व maxDepth विशेषता का उपयोग कर सीमा मान बढ़ाएं। अधिक जानकारी के लिए, Ehcache कॉन्फ़िगरेशन दस्तावेज़ देखें।

इस सीमा को बढ़ाने या मेरे प्रोजेक्ट में कैश को रद्द करने के लिए मैं क्या बदल सकता हूं?

+0

कैश को रद्द करना आमतौर पर चीजों को गति देने के लिए नहीं होता है :) – Gavriel

+0

आपको यह इंगित करने की आवश्यकता है कि आप कैशिंग का उपयोग कर रहे हैं और किस तरह की वस्तुओं पर, ताकि आप समझ सकें कि आप एक बार में इतने बड़े ग्राफ को कैश क्यों करते हैं। –

उत्तर

3

आप अपने संसाधन/ehcache.xml में निम्न टैग जोड़ सकते हैं। संपत्ति maxDepthExceededBehavior = गर्भपात अपनी सेवाओं को धीमा से बचा जाता है। सीमा को बढ़ाने के लिए आप maxDepth बदल सकते हैं।

कैश की गई प्रविष्टियों

तत्वों एक स्मृति सीमित कैश में डाल उनकी स्मृति होगा आकार मापा का आकार:

<sizeOfPolicy maxDepth="1000" maxDepthExceededBehavior="abort" /> 
1

यहाँ Ehcache official documentation का कहना है कैश की गई प्रविष्टियों की के बारे में आकार है। कैश में जोड़ा गया संपूर्ण एलिमेंट इंस्टेंस मापा जाता है, जिसमें कुंजी और मान शामिल है, साथ ही आंतरिक डेटा संरचनाओं के उदाहरण जोड़ने की स्मृति पदचिह्न भी शामिल है। कुंजी और मान को ऑब्जेक्ट ग्राफ़ के रूप में मापा जाता है - प्रत्येक संदर्भ का पालन किया जाता है और ऑब्जेक्ट संदर्भ भी मापा जाता है। यह पुनरावर्ती पर चला जाता है।

साझा संदर्भ प्रत्येक वर्ग द्वारा मापा जाएगा जो इसका संदर्भ देता है। इसका परिणाम ओवरस्टेटमेंट होगा। साझा संदर्भ इसलिए अनदेखा किया जाना चाहिए। चल वस्तु ग्राफ


आकार कैश traversing वस्तु रेखांकन शामिल है, एक प्रक्रिया है कि एनोटेशन के साथ सीमित किया जा सकता सीमित के लिए

विन्यास। इस प्रक्रिया को कैशमेनगर और कैश स्तर दोनों पर भी नियंत्रित किया जा सकता है।

नियंत्रण कितना गहरा आकार के इंजन जब CacheManager स्तर

<sizeOfPolicy maxDepth="100" maxDepthExceededBehavior="abort" /> 

पर निम्न तत्व जोड़कर ऑन-ढेर तत्वों आकार जा सकते हैं यह तत्व निम्न विशेषताओं है:

  • maxDepth जो नियंत्रित करता है कि इंजन के आकार से पहले कितनी लिंक वाली वस्तुओं का दौरा किया जा सकता है। यह विशेषता आवश्यक है।

  • maxDepthExceededBehavior जो निर्दिष्ट करता है क्या होता है जब अधिकतम गहराई से अधिक हो गई है, जबकि एक वस्तु ग्राफ आकार। इस दायर वाले संभावित मान हैं:

    • continue जो बलों आकार के इंजन में एक चेतावनी लॉग इन करें और आकार आपरेशन जारी रखने के लिए। इस विशेषता को निर्दिष्ट नहीं करती है, continue व्यवहार इस्तेमाल किया

    • abort जो आकार-के इंजन बलों आकार निरस्त करने के लिए, एक चेतावनी प्रवेश करें, और निशान कैश के रूप में सही ढंग से स्मृति के उपयोग पर नज़र रखने के नहीं है। इस सेटिंग से, Ehcache.hasAbortedSizeOf() रिटर्न true

sizeof नीति (<cache> या <defaultCache> के तहत) कैश प्रबंधक स्तर (सीधे <ehcache> से कम) और कैश स्तर पर कम से विन्यस्त किया जा सकता। दोनों सेट होने पर कैश नीति हमेशा कैश प्रबंधक एक को ओवरराइड करती है। इस तत्व का वितरण कैश पर कोई प्रभाव नहीं पड़ता है।

+1

कृपया कुछ और स्वरूपण करने का प्रयास करें, क्योंकि पाठ की दीवार पढ़ने के लिए मुश्किल है। –

संबंधित मुद्दे