Quando si implementa un interprete, si tratta di un bene o un male per due vie fuori garbage collector della lingua del paese ospitante?

StackOverflow https://stackoverflow.com/questions/2179501

Domanda

diciamo Let si implementa un interprete per un linguaggio GCed in una lingua che è GCed. Mi sembra si otterrebbe garbage collection per libero finchè siete ragionevolmente attenti a vostro disegno.

E 'questo in generale come si fa? Ci sono buone ragioni per non farlo?

È stato utile?

Soluzione

Lingua e runtime sono due cose diverse. Essi non sono realmente IMHO correlati.

Quindi, se siete un GC già esistente offerta di runtime, ci deve essere una buona ragione per estendere il tempo di esecuzione con un altro GC. Nei bei tempi in cui le allocazioni di memoria nel sistema operativo erano lenti e costosi, le applicazioni portato i propri manager di heap che dove più efficace nel trattare con piccoli blocchi di dati. Questa è stata una readon per l'aggiunta di un altro la gestione della memoria ad un tempo di esecuzione esistente (o OS). Ma se si parla di Java, .NET o giù di lì -. Chi dovrebbe essere buona e abbastanza efficiente per la maggior parte dei compiti a portata di mano

Tuttavia, si consiglia di creare una vera e propria interfaccia / API per compiti di memoria e di gestione degli oggetti (e non solo), in modo che la lingua ( "guest") Tempo di esecuzione potrebbe essere implementato su di un altro tempo di esecuzione dell'host in seguito.

Altri suggerimenti

Per un interprete, non ci dovrebbe essere alcun problema con l'utilizzo del GC padrone di casa, secondo me, soprattutto in un primo momento. Come sempre si obiettivo dovrebbe essere quello di ottenere qualcosa di lavoro, quindi farlo funzionare bene, poi fare in fretta. Ciò è particolarmente vero per dominio specifico Lingue (DSL) dove l'obiettivo è un piccolo linguaggio. Per questi, l'attuazione di un GC completa sarebbe un errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top