Visualizzazione dei risultati da 1 a 7 su 7

Discussione: memoria heap

  1. #1
    Utente bannato
    Registrato dal
    Dec 2008
    Messaggi
    64

    memoria heap

    ciao stavo ripetendo la memoira heap ma ...quando io metto i dati nell'heap questi rimangono anche quando chiudo il computer?????????cioè è una memoria di tipo volatile o non volatile...se fosse non voltatile e per questo che devo dealoccare perchè si no la prossima volta che proverei a mettere il dato potrei ritrovare la memoria piena??

  2. #2
    Utente bannato
    Registrato dal
    Dec 2008
    Messaggi
    64
    ho visto anche che sorge se dealocco un problema nella deframentazione...questo perchè avviene????? cioè ad esempio quando metto un oggetto in heap gli oggetti vengono messi un di seguito all'altro quindi quando la heap e piena non c'è più spazio anche se in realta dealoccando avrei spazi di memoria liberi???

  3. #3
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    devi specificare il linguaggio che tratti, cerca di scrivere un pochino meglio.

  4. #4
    Utente bannato
    Registrato dal
    Dec 2008
    Messaggi
    64
    Hai ragione parlavo di java da quel che ho capito se io continuo ad allocare dinamicamente
    occupo spazio sulla heap fino a riempirla se poi io dealocco libero spazio ma visto che metto gli elementi uno di seguito all'altro non mi rivela lo spazio che ho liberato e qui interviene la deframentazione che ad esempio shifta tutti gli elementi da una parte in modo tale che quando dovrò inserire un nuovo elemento ci sarà lo spazio?

  5. #5
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    Originariamente inviato da ale60
    Hai ragione parlavo di java da quel che ho capito se io continuo ad allocare dinamicamente
    occupo spazio sulla heap fino a riempirla se poi io dealocco libero spazio ma visto che metto gli elementi uno di seguito all'altro non mi rivela lo spazio che ho liberato e qui interviene la deframentazione che ad esempio shifta tutti gli elementi da una parte in modo tale che quando dovrò inserire un nuovo elemento ci sarà lo spazio?
    semplicemente questo è il compito del garbage collector, quella tu chiami deframmentazione è semplicemente "l'allarme" che fa scattare il garbage collector e la macchina virtuale di java si adopera per ottimizzare l'uso della memoria; la memoria è solitamente RAM, quindi volatile.

    ci sono linguaggi che hanno e altri che non hanno il garbage collector, non è una funzionalità scontata.

  6. #6
    Utente bannato
    Registrato dal
    Dec 2008
    Messaggi
    64
    però il problema della deframentazione non ci dovrebbe essere anche nello stack???perchè in tutti i casi io inserisco blocchi di dati e alla fine della funzione vengono dealoccati ecc...non dovrebbe sorgere lo stesso problema che magari io continuo a mettere dati poi le funzioni muoiono e si libera dello spazio

  7. #7
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    Originariamente inviato da ale60
    però il problema della deframentazione non ci dovrebbe essere anche nello stack???perchè in tutti i casi io inserisco blocchi di dati e alla fine della funzione vengono dealoccati ecc...non dovrebbe sorgere lo stesso problema che magari io continuo a mettere dati poi le funzioni muoiono e si libera dello spazio
    li ci sono riferimenti a dati, non dati, e comunque è proprio lo stack che in un certo senso "detta legge" su cosa ha vita nell'heap; se nell'heap c'è qualcosa che non è referenziato dallo stack, allora java capisce che quel dato o quell'oggetto nell'heap non serve più e lo avvia verso il garbage collector.

    ricorda che il nome di un oggetto in java rappresenta l'indirizzo di memoria che ospita quell'oggetto, il dato non è direttamente contenuto nella variabile, ma la variabile ( nello stack ) ospita un riferimento all'oggetto ( che vive nell'heap ); accade qualcosa di simile in C con i vettori e l'aritmetica dei puntatori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.