2015-04-09 23 views
13

Come disattivare i GC o ridurre notevolmente la frequenza dei GC?Come disabilitare Garbage Collection in GHC Haskell?

Come dargli un'opzione +RTS per un mucchio enorme o dimensioni di allocazione forse?

Voglio vedere come si comporta il mio programma quando nessun GC si verifica.

risposta

17

(Con l'aiuto di carter in #ghc su freenode)

Non c'è switch per GC disattivare completamente. Invece, utilizzare tutte le seguenti opzioni +RTS runtime:

  • Disabilita inattività tempo di immondizia raccolta utilizzando -I0.
  • Impostare la dimensione "nursery" == "area di allocazione" su qualcosa di molto grande, ad es. -A100G, poiché il GC verrà eseguito solo quando l'area di assegnazione è piena.

Vedere https://downloads.haskell.org/~ghc/7.8-latest/docs/html/users_guide/runtime-control.html per una descrizione di queste opzioni.

Tenere presente che si esaurirà rapidamente la RAM.

+8

Bene ... _you_ potrebbe esaurire la RAM rapidamente ma non tutti lo faranno. ;-). Inoltre è possibile eliminare il copy-collect tramite mark-sweep, '-c', passare a una sola generazione (' -G') e ridurre la quantità di spazio libero richiesta ('-mN'). –