Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    [JAVA] Garbage collection

    codice:
    public class Persona{
       static string nome = new String();
       String sesso = new String();
    
       static void getPersona(String nome){
          Persona p = new Persona();
       }
    
       public static void main(..ecc..){
          Persona.getPersona("Anita");
          Persona.getPersona("Paolo");
      }
    }
    Ragazzi qualcuno può dirmi :

    Quanti oggetti possono essere deallocati mediante garbage collector al termine dell'esecuzione del metodo main e non prima?

    (magarmi mostrandomi la deallocazione passo passo). Io direi 5 però non sono sicuro

    Grazie anticipatamente.
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Innanzitutto due domandine:
    1) questo codice lo hai scritto tu o lo hai trovato da qualche parte?
    2) non capisco il senso del metodo getPersona

    Ciao.

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    E' a scopo didattico è stato preso da un compito su java.
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    In un compito, all'università mi sembra di capire dal tuo profilo, ti hanno dato
    una classe con scritto questo? Scusa ma stento a crederci, l'avrai modificato magari.

    codice:
       static void getPersona(String nome){
          Persona p = new Persona();
       }

  5. #5
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Non ho modificato assolutamente nulla!
    Con i sogni possiamo conoscere il futuro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    Re: [JAVA] Garbage collection

    Originariamente inviato da gaten
    codice:
    public class Persona{
       static string nome = new String();
       String sesso = new String();
    
       static void getPersona(String nome){
          Persona p = new Persona();
       }
    
       public static void main(..ecc..){
          Persona.getPersona("Anita");
          Persona.getPersona("Paolo");
      }
    }
    Fattelo dire: questo codice è fatto con i piedi , è a dir poco un obrobrio!!
    Stento , anche io , a credere che all'università ti abbiano dato questo codice..

  7. #7
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Ragazzi è a scopo didattico. Qui vuole sapere una cosa ben precisa. Non è assolutamente un codice che và implementato!
    Con i sogni possiamo conoscere il futuro...

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    - Persona p: non avendo nessuna referenza esterna alla funzione verrà liberato dal GC alla prima esecuzione del GC
    - String sesso: non verrà neppure allocato dalla VM accorgendosi che è un campo mai utilizzato
    - String nome: essendo static verrà allocato anche se mai utilizzato, e non verrà liberato se non quando esce l'applicazione

  9. #9
    Non ci infervoriamo sulle cavolate... è a scopo didattico come già vi ha detto gaten!

    Allora le considerazioni da fare sono poche:
    La classe Persona contiene un oggetto String normale e uno statico.
    Il getPersona invoca il costruttore.

    Facendo le somme:
    - Ho un oggetto statico di cui condivido la memoria (1 oggetto)
    - quando costruisco Anita e Paolo alloco rispettivamente un oggetto (classe Persona) + la String sesso (quindi altri 2x2 oggetti).

    Direi che sono finiti e quindi anche io dico 5 oggetti!

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Hai ragione ho sbagliato con "String sesso" che viene allocato (facente parte di Persona).
    Non verrebbe allocata dalla VM se facente parte di una classe mai creata, ma qui Persona viene creata.

    Concordo con vengano creati 5 oggetti (2 Persona ciascuna con sesso e nome condiviso).
    Il "compito" però chiedeva quando potevano essere liberati se << al termine dell'esecuzione del metodo main e non prima >>, anche qui non è chiaro cosa intenda per termine (l'uscita dal programma?).
    La prima Persona può essere infatti liberata anche PRIMA della fine del metodo main.
    Ciao.

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.