2012-11-09 22 views
15

मेरे पास रूबी 1.9.3 के साथ हेरोोक सीडर पर एक रेल 3.2.8 ऐप चल रहा है। ऐप लॉन्च होने पर ठीक चलता है लेकिन लगातार उपयोग के एक दिन या बाद में, मैं अपने लॉग पर आर 14 त्रुटियों को देखना शुरू करता हूं। एक बार स्मृति त्रुटियां शुरू होने के बाद, वे कभी भी दूर नहीं जाते हैं, भले ही ऐप कई घंटों तक निष्क्रिय हो।हेरोोकू पर मेमोरी रिसाव कैसे मिल सकता है?

कचरा कलेक्टर थोड़ी देर के बाद अप्रयुक्त वस्तुओं को साफ नहीं करना चाहिए और मेमोरी लोड को कम करना चाहिए? ऐसा लगता है कि यह हेरोकू पर नहीं हो रहा है। आम तौर पर, डेटा की कई हज़ार पंक्तियों के साथ कुछ रिपोर्ट चलाने के बाद स्मृति उपयोग शुरू हो जाता है, हालांकि परिणाम पृष्ठित होते हैं।

मुझे स्मृति रिसाव कैसे मिल सकता है? Bleak_house जैसे प्लगइन्स पुराने तरीके से हैं या हरोकू पर्यावरण में अच्छी तरह से नहीं चलते हैं। क्या मैं इसे अधिक आक्रामक बनाने के लिए जीसी सेटिंग्स को समायोजित कर सकता हूं?

उत्तर

5

जीसी को साफ करना चाहिए, और शायद करता है।

आप GC.start के साथ जीसी को मजबूर कर सकते हैं; अगर कई वस्तुएं एकत्र नहीं की गईं, लेकिन मुझे संदेह है कि यह मुद्दा नहीं है।

क्या यह संभव है कि आप किसी भी तरह से ऑब्जेक्ट्स का एक गुच्छा बनाते हैं और कैश की गई प्रतियां या कुछ रखकर उन्हें कभी नहीं छोड़ते?

मैं इसे जांचने के लिए मौजूदा उपकरणों से अपरिचित हूं, लेकिन आप यह जांचना चाहेंगे कि ObjectSpace का उपयोग करके कौन सी वस्तुएं मौजूद हैं। उदाहरण के लिए:

ObjectSpace.each_object.with_object(Hash.new(0)){|obj, h| h[obj.class] +=1 } 
# => a Hash with the number of objects by class 

आप अपने वर्गों में से एक के लिए एक अप्रत्याशित संख्या मिलता है, उदाहरण के लिए, आप के लिए देखने के लिए जहां का एक बेहतर विचार होगा।

-1

नया अवशेष एड-ऑन स्थापित करें। इसमें उपयोगी मीट्रिक का एक गुच्छा है जिसका उपयोग आप रिसाव के स्रोत को जानने के लिए कर सकते हैं। मुझे लगता है कि यह देखने का प्रयास करना एक बेहतर विचार है कि कोड का कौन सा हिस्सा निष्पादित करने में सबसे लंबा समय लेता है और शायद इसे अनुकूलित करने का प्रयास करता है, जीसी को पूरी तरह से ट्विक करने के बजाए।

कुछ अच्छी विशेषताएं जिनमें से कुछ नई विशेषताएं शामिल हैं, उदाहरण के लिए सबसे लंबे समय तक चलने वाली SQL क्वेरी के स्रोत को इंगित करने में सक्षम हैं। मैं आपको इसे आज़माने के लिए प्रोत्साहित करता हूं।

+2

मेरे पास नया अवशेष स्थापित है लेकिन यह मुझे विस्तार का स्तर नहीं दे रहा है मुझे –

+1

न्यूरिलिक स्मृति समस्याओं का निवारण करने के लिए बहुत बेकार है। यह आपको कुछ जीसी जानकारी देता है, हालांकि किसी समस्या को इंगित करने के लिए कुछ भी नहीं है। – 2mia

+0

सहमत हुए। न्यूरेलिक बहुत सी चीजों के लिए सहायक है, लेकिन मेमोरी लीक डीबगिंग उनमें से एक नहीं है। – bloudermilk