2015-04-09 16 views
13

Jak mogę wyłączyć GC lub znacznie zmniejszyć częstotliwość GC?Jak wyłączyć zbieranie śmieci w GHC Haskell?

Np. Podając opcję +RTS dla jakiegoś ogromnego sterty lub rozmiaru alokacji?

Chcę zobaczyć, jak mój program zachowuje się, gdy nie ma żadnych GC.

Odpowiedz

17

(Z pomocą Cartera w #ghc na freenode)

Nie ma przełącznik do całkowicie wyłączyć GC. Zamiast korzystać ze wszystkich następujących opcji +RTS Czas:

  • Wyłącz zbieranie śmieci bezczynny czas korzystania -I0.
  • Ustaw rozmiar przedszkola == "obszar alokacji" na coś bardzo dużego, np. -A100G, ponieważ GC będzie wykonany tylko wtedy, gdy obszar alokacji jest pełny.

Aby uzyskać opis tych opcji, patrz https://downloads.haskell.org/~ghc/7.8-latest/docs/html/users_guide/runtime-control.html.

Należy pamiętać, że szybko wyczerpią się pamięci RAM.

+8

Cóż ... _może Ci zabraknąć pamięci RAM szybko, ale nie wszyscy to zrobią. ;-). Możesz również wyeliminować kopiowanie za pomocą mark-sweep, '-c', przełącz na tylko jedno pokolenie (' -G') i zmniejszyć ilość wymaganej wolnej przestrzeni ('-mN'). –

Powiązane problemy