Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568

    [java] problemi di memoria

    ho un programma che contiene un loop infinito...
    il loop richiama 4 funzioni che fanno ricerche su db, mandano delle mail etc..

    il problema che mi preoccupa è che guardando tra i processi la memoria utilizzata sale...

    poco poco per volta ma sale sempre... da 40 k arriva fino a 90 k... poi di botto scende a 43k... poi sale fino a 93 e poi scende a 46... etc...

    dove sbaglio secondo voi ???
    cos'è che fa salire la memoria ???

    le variabili sono istanziate all'interno di ciascuna funzione...
    ma allla fine della funzione dovrebbero "morire".. o sbaglio ???

    proprio non capsico cos'è che mi riempie la memoria così tanto...
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Credo che sia semplicemente il fatto che il GarbageCollector viene richiamato dalla JVM a intervalli regolari prefissati di <tot> secondi (non ricordo ogni quanto).
    Quindi le variabili che in teoria dovrebbero morire ogni volta che la loro funzione termina, in realtà rimangono in memoria finchè non passa il GC a toglierle.
    Poi, può essere che l'elaborazione di ciascuna funzione richieda risorse dovute a classi di package esterni.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3

    "killare" le variabili di troppo

    si possono "killare" manualmente le variabili che non uso cosi da liberare spazio?
    in che modo?
    ciao

  4. #4
    vado a memoria..dovrebbe esserci il metodo gc() della classe system. Che attiva il garbage manualmente..

  5. #5
    perfetto grazie!!

  6. #6
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da ceccanocity
    vado a memoria..dovrebbe esserci il metodo gc() della classe system. Che attiva il garbage manualmente..
    non mi è chiaro... che istruzione devo usare più precisamente ???
    c'è un' istruzione che svuota tutto ???
    sarebbe comodo, la metto all'inizio del ciclo ed il gioco è fatto !!!
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Richiamando il metodo gc() statico nella classe System, viene manualmente risvegliato il GarbageCollector.

    Si usa così:
    codice:
    ...   // Ho una serie di variabili che non mi servono più (oggetti posti a null)
    System.gc();   // Con questa istruzione richiamo il GC.
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ora provo poi ti so dire !!!
    grazie !!!

    dubbietto però : mi pulisce tutte le variabili della classe da cui lo richiamo o anche dalle altre che ho chiamato in precedenza ???
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Da quello che leggo sulla documentazione viene richiamato proprio il GarbageCollector della JVM (che quindi non fa distinzioni fra classi, ma guarda tutta la memoria allocata per la JVM).
    In pratica si forza il GarbageCollector ad entrare in azione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.