2013-06-19 14 views
6

Czy są jakieś okoliczności, w których GC.disable może pogorszyć wydajność? Czy można to zrobić, o ile korzystam z rzeczywistej pamięci RAM zamiast wymiany pamięci?Jakiekolwiek wady wydajności GC?

Używam MRI Ruby 2.0, io ile mogę powiedzieć, że to 64-bitowy i 64-bitowy za pomocą Ubuntu:

ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux] 

Linux [redacted] 3.2.0-43-generiC#68-Ubuntu SMP Wed May 15 03:33:33 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 
+1

domyślam się, że zależy to od twojej aplikacji, powinieneś zrobić testy wydajności i profilowanie pamięci z i bez włączonego gc, aby uzyskać podstawy do uzasadnienia swojej decyzji – jethroo

Odpowiedz

1

GC.disable uniemożliwi zbieranie śmieci. Języki takie jak ruby ​​nie mają możliwości zwolnienia pamięci bez odśmiecania, ponieważ w przeciwieństwie do C nie wywołuje się ręcznie deallocator pamięci.

Tak, wystąpi uderzenie wydajności. W końcu zabraknie pamięci, ponieważ obiekty takie jak łańcuchy będą wciąż tworzone i nigdy nie będą oczyszczane. Możesz nawet nie być odpowiedzialnym, ponieważ wewnętrzna mechanika używanych API może generować obiekty.

Bez lepszego zrozumienia problemu jest to niestety najlepsze, co mogę zaoferować.