2012-12-10 18 views
7

रूबी ऑब्जेक्ट द्वारा उपयोग की जाने वाली मेमोरी खोजने के लिए रूबी में कोई फ़ंक्शन है।
सी के पास sizeof() फ़ंक्शन के समान है और PHP में memory_get_usage() फ़ंक्शन है। क्या रूबी के बराबर कार्य/विधि है?रूबी ऑब्जेक्ट द्वारा उपयोग की जाने वाली मेमोरी को कैसे ढूंढें?

+4

शायद एक डुप्लिकेट: http://stackoverflow.com/questions/3973094/how-to-measure-the-size-of-a-ruby-object – Matt

+0

@ मैट - धन्यवाद। –

+1

मैं उत्सुक हूं: आपके प्रश्न का उद्देश्य क्या है? क्या आप किसी ऑब्जेक्ट के आकार को जानना चाहते हैं या आप यह पता लगाने की कोशिश कर रहे हैं कि कितनी मेमोरी में बड़ी संख्या में कुछ वस्तुएं होंगी? – Sim

उत्तर

2

यह एक खंड है, लेकिन अपने लक्ष्य को एक स्मृति रिसाव देखने के लिए, बजाय अलग-अलग वस्तुओं के आकार को देखने के है, तो आप, object_count(cls) पर लग सकता है के रूप में:

>> ObjectSpace.each_object(Object).count 
=> 114629 
>> ObjectSpace.each_object(Array).count 
=> 10209 

आदि Fwiw, प्रतीकों कुछ भिन्न होते हैं: आप के माध्यम से प्रतीकों में से गिनती प्राप्त कर सकते हैं:

>> Symbol.all_symbols.count 
=> 17878 

यदि आप नहीं का एक रिसाव है जानने के लिए, आप मैन्युअल रूप से,, जीसी फोन अपने वस्तुओं की गिनती कर सकते हैं थोड़ी देर के लिए अपने कोड चलाने के लिए, जीसी को दोबारा कॉल करें, फिर देखें कि क्या कोई ऑब्जेक्ट गिनती काफी बढ़ी है।

बेशक, यह आपको प्रत्येक ऑब्जेक्ट का आकार नहीं बताता है, बस प्रत्येक वर्ग कितने आवंटित किए जाते हैं।

memprof भी है, लेकिन मैं मानता हूं कि मैंने अभी तक इसका उपयोग नहीं किया है।

+0

यह स्मृति में ऑब्जेक्ट्स की संख्या है। मूल प्रश्न, जैसा कि मैं इसे समझता हूं, पूछता है कि एक ही ऑब्जेक्ट के मेमोरी उपयोग (बाइट्स में) को कैसे ढूंढें। – Ariejan

+0

@ एरिजन: पूरी तरह से सहमत हैं। यही कारण है कि मैंने कहा "* यदि आपका लक्ष्य व्यक्तिगत वस्तुओं के आकार को देखने के बजाय स्मृति रिसाव की तलाश करना है ..." –

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

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