-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[18] Come posso liberare un array o un hash in modo che il mio programma si riduca (in memoria)?

(contributo di Michael Carman)

Di solito non si può. La memoria allocata ai lessicali (cioè le variabili my()) non poò essere recuperata o riutilizzata anche se le variabili vanno al di fuori dello scope. La memoria è riservata nel caso che le variabili ritornito nello scope. La memoria allocata alle variabili globali può essere riutilizzata (all'interno del vostro programma) utilizzando undef() e/o delete().

Sulla maggior parte dei sistemi operativi, la memoria allocata ad un programma non può essere restituita al sistema. Questo è il motivo per cui i programmi di lunga esecuzione talvolta si ri-eseguono. Alcuni sistemi operativi (da rimarcare, i sistemi che usano mmap(2) per allocare grosse porzioni di memoria) possono chiedere la restituzione della memoria che non viene piì usata, ma, su tali sistemi, perl deve essre configurato e compilato affinché usi il malloc del sistema operativo e non quello del perl.

In generale, l'allocazione di memoria e la deallocazione, in Perl non sono qualcosa di cui possiate o che dobbiate preoccuparvi molto.

Consultate anche "Come posso fare affinché i miei programmi in Perl occupino meno memoria?"

Ad ogni modo, un uso giudizioso di my() sulle vostre variabili vi aiuterà ad assicurarvi la loro uscita dallo scope in maniera che Perl possa liberare quello spazio per usarlo in altre parti del vostro programma. Una variabile globale, naturalmente, non uscirà mai dallo scope, per cui non si può avere automaticamente la restituzione del suo spazio, benché eseguire su di essa un undef() e/o un delete() otterrà lo stesso effetto. In generale, l'allocazione di memoria e la deallocazione, in Perl non sono qualcosa di cui possiate o che dobbiate preoccuparvi molto, ma anche questa proprietà (la preallocazione di tipi di dato) è in cantiere.

vedi in inglese

AUTORE E COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan Torkington. Tutti i diritti riservati.

Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.

Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese ma non è obbligatorio.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google