Abbiamo visto fin'ora parlando di eccezioni, il concetto di CallStack (pila delle chiamate) → la funzionalità del debug che ci consente di vedere la catena o la pila delle chiamate. Mettendo le chiamate correnti in alto mentre quelle precedenti in basso. Il concetto di Stack → un'area di memoria destinata per l'utilizzo delle funzioni. Quest'area è destinata ha mantenere informazioni su queste call. Questa memoria ha diversi utilizzi:
Una prima parte per di questa memoria code → destinata ha contenere le istruzioni eseguibili del programma stesso, cioè il codice
Un'altra area variabili globali → che servono all'esecuzione di tutto il programma, che non sono definito all'interno delle funzioni ma al di fuori, valgono globalmente nel programma.
La parte Heap → area che serve per l'allocazione di oggetti che sono destinati a crescere indefinitivamente come i reference type e le classi, quindi è un 'area di memoria riservata all'allocazione dinamica degli oggetti che non hanno una dimensione predefinita.
Per quanto riguarda la parte di memoria Stack → è un' area di memoria specializzata che serve a contenere tutti i dati dei nostri meotodi(funzioni) che andiamo ad eseguirle, abbiamo questa struttura a pila contenente i Value Type.
Ciascuna di queste funzioni causa l'allocazione di un area riservata per ciascuna funzione e viene chiamata Stack Frame via via che ci sono nuove chiamate ci sono nuovi Stack Frame. Quindi nello Stack Frame ci sono un sacco di informazioni, sono presenti le variabili locali definite all'interno della funzione. Le New entry vengono aggiunte in cima e vengono definite LiFO(Last In First Out) che sono le ultime ad entrare e le prime ad uscire.
La dimensione della Stack di solito è 1GB per 32 bit
La dimensione della Stack di solito è 4GB per 64 bit
E' possibile che il programma ecceda la dimensione messa a disposizione e si genera questa eccezione chiamata Stack Overflow.
Nessun commento:
Posta un commento