2010-10-04 12 views
5

तो, गहरे लाल रंग का उद्यम प्रलेखन कहा गया है कि जी सी सेटिंग्स में सभी मान स्लॉट में परिभाषित कर रहे हैं: http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuningरूबी कूड़ा संग्रह ढेर स्लॉट आकार

(जैसे RUBY_HEAP_MIN_SLOTS)

हम परिष्कृत हमारे एप्लिकेशन की न्यूनतम स्लॉट आकार और परीक्षण और त्रुटि द्वारा सर्वोत्तम प्रदर्शन के लिए वृद्धि (हमारे पास पर्याप्त विचार है कि मॉलोक कॉल और पूर्ण जीसी की संख्या को कितना अलग मूल्य प्रभावित करते हैं)।

लेकिन थोड़ी देर के लिए मुझे कुछ परेशान कर रहा है: बाइट्स में 1 स्लॉट कितना बड़ा है?

उत्तर

3
$ rvm use ruby-1.9.2-p136 
$ gdb ruby 
(gdb) p sizeof(RVALUE) 
$1 = 40 
+1

gdb क्या है? इस संदर्भ में '$ 1 =' का अर्थ क्या है? किस इकाई में "40" है? –

+0

'पी' =' प्रिंट'; '1 1' वापसी मूल्य है; '40' बाइट्स में आकार है: http://en.wikipedia.org/wiki/Sizeof – arrtchiu

1

1.9 में डिफ़ॉल्ट 8K

http://svn.ruby-lang.org/repos/ruby/trunk/gc.c (HEAP_SIZE के लिए खोज)

नोट में अच्छी तरह से है कि जब भी यह स्थान से बाहर चलाता है और पुनः आवंटित करने की जरूरत है, 1.9 में यह तेजी से और अधिक ढेर आवंटित करता है।

1.8 में यह बड़ा और बड़ा ढेर आवंटित करेगा।

+0

प्रश्न 1 स्थान का आकार के बारे में है (अर्थात डिफ़ॉल्ट ढेर आकार मिनट 10_000 स्लॉट है, कितना बड़ा 1 स्लॉट है) – glebm

1

कोड के माध्यम से Diggin एवं 'के बाद:

1 slotsizeof(struct RVALUE) का एक आकार है, जो मशीन पर निर्भर करता है।

4

रूबी स्रोत से:

* sizeof(RVALUE) is 
* 20 if 32-bit, double is 4-byte aligned 
* 24 if 32-bit, double is 8-byte aligned 
* 40 if 64-bit 
संबंधित मुद्दे