2015-04-20 18 views
8

Ho iniziato a leggere sul linguaggio di programmazione Elixir.L'elisir ha un garbage collector?

ho capito che:

  1. è funzionale
  2. E 'dinamico, ma il supporto @spec
  3. Si basa su Erlang VM

La mia domanda è: Ha un una specie di GC?

+1

Nota a margine: '@ spec's sono ** annotazioni **, non sono comprese dal compilatore Elixir (o da Erlang). Vengono utilizzati principalmente da un analizzatore statico chiamato [dializzatore] (http://www.erlang.org/doc/man/dialyzer.html). – whatyouhide

+0

per esempio ... se ottieni una lista di stringhe dalla rete e poi la consumo in una pura funzione cosa succede quando la funzione ritorna? Questa lista viene distrutta immediatamente o viene distrutta da una specie di GC? –

risposta

14

Sì, Erlang ha GC e, poiché Elixir è costruito su Erlang, anche GC. Vedi questo vecchio SO answer su Erlang GC e this uno. Il sito elisir riferisce a GC come segue:

Grazie alla loro leggerezza, non è raro avere centinaia di migliaia di processi in esecuzione contemporaneamente nella stessa macchina. L'isolamento consente ai processi di essere sottoposti a garbage collection in modo indipendente, riducendo le pause a livello di sistema e utilizzando tutte le risorse macchina come nel modo più efficiente possibile (ridimensionamento verticale).

+10

anche in elixir è possibile visualizzare la spazzatura mentre viene raccolta se si avvia: observer.start() e si guardano i grafici mentre il programma è in esecuzione. – GavinBrelstaff

+0

Fantastico! non lo sapevo, grazie! –