Eliminazione oggetto istanziato: efficienza di un programma

di il
1 risposte

Eliminazione oggetto istanziato: efficienza di un programma

Salve a tutti. Ho un piccolo problema.
Sto provando a creare un piccolo gestionale in java tanto per fare un po di esercizio. Ci tengo molto all'efficienza di tutto quello che faccio pertanto vorrei che utilizzasse meno ram possibile.

Il programma prevede un frame con all'interno un pannello contenente alcuni bottoni al click dei quali viene richiamato un ascoltatore di eventi del bottone che mi istanzia un nuovo oggetto(presente in altre classi).

Questo nuovo oggetto sarebbe un qualcosa che mi crea un pannello per l'inserimento di alcuni dati che salverò in un DB (che ovviamente lo sovrappongo a quello esistente con un gioco di setVisible()...se esistono metodi più efficienti fatemelo sapere per favore)

Il pannello è composto da una serie di campi ed in basso ho un altro pannellino che ha i classici bottoni SALVA, RIPRISTINA CAMPI, HOME.

quando clicco sul bottone della homepage per andare ad esempio nel pannello INSERISCI CLIENTE, vorrei che tutto ciò che ho istanziato precedentemente per la homepage mi venga cancellato, questo perchè quando vado a far click sul bottone HOME del pannello INSERISCI CLIENTE io devo tornare indietro, pertanto allocherei memoria per un nuovo oggetto HOMEPAGE (e quindi ho gia 2 oggetti homepage creati ed un oggetto INSERISCI CLIENTE che vorrei anche eliminare)

Fatto questo giochetto diverse volte mi troverei un casino di oggetti homepage ed inserisci clienti allocati che non utilizzo e quindi ho un forte spreco di memoria.

Come posso risolvere questo problema?

La struttura che utilizzo è la seguente:

Classe che crea il frame.

Questa classe crea un oggetto di tipo : HomePage hp = new HomePage(framePrincipale);
che contiene il pannello con i vari bottoni per la selezione dell'azione da fare.

La classe HomePage ha degli ascoltatori dei bottoni di questo tipo :

class bottoneNuovoClienteListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            pannelloContenitore.setVisible(false);
            InserisciNuovoCliente inc = new InserisciNuovoCliente(framePrincipale);
            framePrincipale.validate();
        }
    }
Quando creo questo oggetto INSERISCINUOVOPAZIENTE ho il pannello in basso con il bottone home con un ascoltatore di questo tipo che mi ricrea un oggetto di tipo homepage

Voglio evitare questo spreco inutile di memoria cancellando di volta in volta nel bottone l'oggetto corrente.

Come faccio???Si può fare?

Mi scuso per la lunghezza del post ed auguro buon anno a tutti!!!

1 Risposte

  • Re: Eliminazione oggetto istanziato: efficienza di un programma

    Ciao, a dire il vero il tuo post non è molto chiaro, ma da quello che ho capito, forse sbaglio, basta che crei un oggetto con i dati della form da inserire nel DB che quando viene generato l'evento inserisci nuovo cliente pone uguale a null quello di prima oppure azzeri tutti i campi del precedente (inquesto modo hai maggiore efficenza per quanto riguarda l'allocamento della memoria), e ricordati che quando non ci sono riferimenti attivi ad un oggetto ci pensa java a eliminarlo dalla memoria con il garbage collection (letteralmente raccolta dei rifiuti). Per quanto riguarda il pannello puoi usare lo stesso metodo cioè creandone uno nuovo e sovrapponendolo senza crearli tutti e poi mettendoli visibili.... spero di essere stato di aiuto
Devi accedere o registrarti per scrivere nel forum
1 risposte