Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    3

    liberare le risorse occupate da JFrame

    Ciao a tutti!
    Sto realizzando un programma in Java e mi sono accorto che ogni volta che apro e chiudo una finestra che deriva da JFrame o JDialog le risorse non vengono liberate. Questo siginifica che se il programma rimane in esecuzione per molto tempo, durante il quale vengono aperte e chiuse finestre, lo spazio occupato in memoria diventa eccessivo.
    Nel codice, per chiudere le funzioni ho provato ad utilizzare la funzione dispose(), ma non ho avuto risultati. Qualche idea??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: liberare le risorse occupate da JFrame

    Originariamente inviato da jo83
    Sto realizzando un programma in Java e mi sono accorto che ogni volta che apro e chiudo una finestra che deriva da JFrame o JDialog le risorse non vengono liberate.
    Dipende di quali "risorse" stai parlando.

    Originariamente inviato da jo83
    Nel codice, per chiudere le funzioni ho provato ad utilizzare la funzione dispose()
    dispose() libera tutte le risorse "native" che il sistema ha dedicato alla finestra in termini di memoria, handle vari o altro.

    Quindi ripeto la domanda: di quali risorse stai parlando??? Java ha il "garbage collection", quindi il recupero della memoria relativa ad oggetti non più referenziati è automatico. Non vorrei che da qualche parte mantieni dei reference a oggetti o array di una certa dimensione mentre invece vorresti non usarli più ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    3

    Re: Re: liberare le risorse occupate da JFrame

    Originariamente inviato da andbin
    di quali risorse stai parlando??? Java ha il "garbage collection", quindi il recupero della memoria relativa ad oggetti non più referenziati è automatico. Non vorrei che da qualche parte mantieni dei reference a oggetti o array di una certa dimensione mentre invece vorresti non usarli più ...
    Intendo la quantità di memoria allocata. in fase di uscita da ciascuna finestra ho provveduto a mettere a null tutti gli oggetti allocati in modo da permettere al garbage collector di rimuoverli dalla memoria e per maggiore sicurezza ne ho forzato l'esecuzione. Praticamente ho fatto questa prova:
    1) eseguo il programma
    2) rilevo la quantità di memoria allocata tramite task manager (chiamiamola x per comodità)
    3) apro una finestra, e noto un incremento di x, e poi richiudo la finestra
    4) rilevo nuovamente la quantità di memoria allocata (chiamiamola y)

    a questo punto mi asppeterei che y sia pressapoco uguale ad x, invece risulta essere più grande....

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: liberare le risorse occupate da JFrame

    Originariamente inviato da jo83
    2) rilevo la quantità di memoria allocata tramite task manager (chiamiamola x per comodità)
    Ah ok, tu stai parlando proprio della memoria che la JVM ha richiesto al S.O.
    Beh, questa pagina sul forum della Sun spiega la questione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    Io ho un problema simile!

    in un BufferedImage carico delle immagini e ad ogni caricamento il consumo di memoria RAM aumenta di 2-3 MB. Questa situazione me la ritrovo caricando dei file DXF, con le immagini JPG ho risolto richiamando il Garbage Collector con System.gc().

    Ho provato a usare il metodo flush() per il BufferedImage, a linkare a null , ho provato ad usare il dispose() per l'immagine, ma niente! il consumo di RAM aumenta solo!


  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    3

    Niente da fare. Ho provato sia a modificare i parametri MaxHeapFreeRatio-MinHeapFreeRatio sia ad usare System.gc() per forzare il garbage collector. Purtroppo la memoria allocata rimane sempre più grande di quella liberata.
    Le ultime istruzioni che faccio prima di chiudere la finestra sono queste:
    arrayProduttori=null;
    arraySettori=null;
    arraySuperfici=null;
    jListClienti=null;
    jListProduttori=null;
    jListSuperfici=null;
    jListSettori=null;
    clienti=null;
    panel1=null;
    padre=null; //rischio
    id=null;
    System.gc();
    Non riesco a capire cosa accade....

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.