2010-10-04 6 views
5

So, Rubin Unternehmen Dokumentation besagt, dass alle Werte in den GC-Einstellungen in Schlitze definiert sind: http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuningRuby-Garbage Collection Heap Slot Größe

(zB RUBY_HEAP_MIN_SLOTS)

Wir fein abgestimmt unsere App min Nutengröße und inkrementieren für die beste Leistung durch Versuch und Irrtum (wir haben genug Maschinen, um eine gute Idee zu bekommen, wie unterschiedliche Werte die Anzahl von malloc-Anrufen und Voll-GCs beeinflussen).

Aber etwas nervt mich schon seit einiger Zeit: Wie groß ist 1 Slot in Bytes?

Antwort

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

Was GDB ist? Was bedeutet '$ 1 =' in diesem Zusammenhang? Welche Einheiten sind "40"? –

+0

'p' =' print'; '$ 1' ist der Rückgabewert; '40' ist die Größe in Bytes: http://en.wikipedia.org/wiki/Sizeof – arrtchiu

1

Der Standard in 1.9 ist 8K

http://svn.ruby-lang.org/repos/ruby/trunk/gc.c (Suche nach HEAP_SIZE)

Note gut, dass, wenn es der Platz ausgeht und eine Neuverteilung muss, in 1,9 exponentiell mehr Haufen zuordnet.

In 1.8 würde es immer größere Haufen zuweisen.

+0

Die Frage ist, über die Größe von 1 Slot (das heißt die Standard-min-Heap-Größe ist 10_000 Slots, wie groß ist 1 Slot) – glebm

1

Nach Diggin' durch den Code:

1 slot ist eine Größe von sizeof(struct RVALUE), die auf der Maschine abhängt.

4

von Ruby Quelle:

* 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 
Verwandte Themen