Dove si trova la classe stessa memorizzata in runtime come riferimento

2

In C # o Java troviamo che gli oggetti sono memorizzati nell'heap e le loro var di riferimento sono archiviate nello stack. Ma al momento dell'esecuzione, dove è memorizzata la definizione della classe da utilizzare come modello per la creazione di oggetti?

    
posta user50927 18.01.2016 - 18:55
fonte

2 risposte

2

Le definizioni di classe sono memorizzate in un'area separata (né stack né heap) chiamata area del metodo . In .net l'area corrispondente è chiamata Heap Loader . I dati nell'area del metodo sono scritti dal programma di caricamento classi e non vengono mai raccolti e non possono essere eliminati.

    
risposta data 18.01.2016 - 19:14
fonte
1

Una classe non è un modello monolitico. È un concetto astratto. Ha metodi, che sono codice eseguibile. Quel codice sarà nel "segmento di codice". Il modello a cui fai riferimento sarebbe una struttura che contiene i valori iniziali per i membri dei dati e probabilmente una tabella dei metodi virtuale. Questi sarebbero nel "segmento dati". Cioè, una volta che tutto il codice nativo viene caricato in memoria, pronto per essere eseguito. Prima di ciò (mentre è IL o il codice byte Java), sono tutti i dati caricati nella memoria allocata. In modo che sarebbe in pila.

"Area del metodo" come menzionato in una risposta diversa è una risposta a livello di infrastruttura di lingua comune. Questo è il software. Heap e stack sono concetti a livello di CPU, così come lo sono il segmento di codice e il segmento di dati.

    
risposta data 18.01.2016 - 21:57
fonte

Leggi altre domande sui tag