कि सी
के रूप में एक ही तरह से एक वर्ग के आकार की गणना करता है एक वस्तु की स्मृति आकार कार्यान्वयन निर्भर है कोई भाषा सुविधा नहीं है। यह बेस क्लास ऑब्जेक्ट के कार्यान्वयन पर निर्भर करता है। उपयोग की गई स्मृति का आकलन करना भी आसान नहीं है। उदाहरण के लिए, यदि वे छोटे होते हैं तो तारों को आरस्ट्रिंग संरचना में एम्बेड किया जा सकता है, लेकिन यदि वे लंबे होते हैं तो ढेर में संग्रहीत किया जाता है (Never create Ruby strings longer than 23 characters)।
स्मृति कुछ वस्तुओं द्वारा उठाए गए विभिन्न गहरे लाल रंग का कार्यान्वयन के लिए सारणीबद्ध कर दिया गया है Memory footprint of objects in Ruby 1.8, EE, 1.9, and OCaml
अंत में, वस्तु आकार भी दो वस्तुओं के साथ एक ही कक्षा से, अलग हो सकता है, क्योंकि यह संभव है मनमाने ढंग से अतिरिक्त उदाहरण चर जोड़ने के लिए, हार्डकोडिंग के बिना क्या आवृत्ति चर मौजूद हैं। उदाहरण के लिए, instance_variable_get और instance_variable_set
आप एमआरआई रूबी 1.9.2+ का उपयोग करते हैं देखते हैं, वहाँ एक तरीका है आप कोशिश कर सकते हैं (चेतावनी दी है कि यह वस्तु का ही हिस्सा में दिख रही है है, इस से स्पष्ट है तथ्य यह है कि पूर्णांकों और तार शून्य आकार की और होता है):
irb(main):176:0> require 'objspace'
=> true
irb(main):176:0> ObjectSpace.memsize_of(134)
=> 0
irb(main):177:0> ObjectSpace.memsize_of("asdf")
=> 0
irb(main):178:0> ObjectSpace.memsize_of({a: 4})
=> 184
irb(main):179:0> ObjectSpace.memsize_of({a: 4, b: 5})
=> 232
irb(main):180:0> ObjectSpace.memsize_of(/a/.match("a"))
=> 80
तुम भी memsize_of_all कोशिश कर सकते हैं (ध्यान दें कि यह पूरे दुभाषिये की स्मृति उपयोग को देखता है, और एक चर अधिलेखित वर्ष प्रतिलिपि हटाने के लिए प्रकट नहीं होता है तत्काल):
irb(main):190:0> ObjectSpace.memsize_of_all
=> 4190347
irb(main):191:0> asdf = 4
=> 4
irb(main):192:0> ObjectSpace.memsize_of_all
=> 4201350
irb(main):193:0> asdf = 4
=> 4
irb(main):194:0> ObjectSpace.memsize_of_all
=> 4212353
irb(main):195:0> asdf = 4.5
=> 4.5
irb(main):196:0> ObjectSpace.memsize_of_all
=> 4223596
irb(main):197:0> asdf = "a"
=> "a"
irb(main):198:0> ObjectSpace.memsize_of_all
=> 4234879
आपको बहुत सावधान रहना चाहिए क्योंकि रूबी दुभाषिया कचरा संग्रह करने पर कोई गारंटी नहीं है। जबकि आप इसका परीक्षण और प्रयोग के लिए उपयोग कर सकते हैं, यह अनुशंसा की जाती है कि इसका उत्पादन में उपयोग न हो!
इस प्रश्न के लिए कम से कम दो जटिलताएं हैं: 1) किसी ऑब्जेक्ट के सभी गुण अन्य वर्गों की वस्तुएं भी हैं, इसलिए आपको यह स्पष्ट करने की आवश्यकता है कि वे शामिल हैं या नहीं। 2) रूबी में इंस्टेंस वेरिएबल्स की संख्या और प्रकार गतिशील हैं, इसलिए वास्तव में कक्षा की स्मृति आकार जैसी कोई चीज़ नहीं है। हालांकि, आप सिद्धांत में वर्तमान में किसी ऑब्जेक्ट को आवंटित स्मृति को माप सकते हैं (हालांकि मुझे वर्तमान में यह नहीं पता कि कैसे, या यदि रूबी आपको ऐसा करने देता है)। –