Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1
    ciao andbin!

    ho modifcato il codice così e funziona:
    codice:
        public static void main(String[] args) throws IOException {
            final HttpServer server = startServer();
    
            Timer timer = new Timer();
            timer.scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    Runtime runtime = Runtime.getRuntime();
                    long memoryBytes = runtime.totalMemory() - runtime.freeMemory();
                    long memoryMBytes = memoryBytes / MEGABYTE;
                    System.out.println("MB usati: " + memoryMBytes);
                    if (memoryMBytes > 80) {
                        runtime.gc();
                        System.out.println("Memoria pulita!");
                    }
                }
    
            }, 5000, 5000);
    
            System.out.println(String.format("Jersey app started with WADL available at %sapplication.wadl\nHit enter to stop it...", BASE_URI));
            System.in.read();
            timer.cancel();
            server.shutdownNow();
        }
    in effetti la memoria in questi test viene ripulita.
    quando supera gli 80 MB, viene portata sui 10 MB.

    però, se il gc() è solo un suggerimento, c'è un altro modo per essere sicuro che la memoria venga ripulita nel caso superi una certa soglia?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    però, se il gc() è solo un suggerimento, c'è un altro modo per essere sicuro che la memoria venga ripulita nel caso superi una certa soglia?
    Di per sé no, non c'è. E comunque truschini del genere non si dovrebbero fare. Il punto è: se il tuo programma ha veramente bisogno di molta memoria, allora è un conto ed è bene dare alla JVM un heap space adeguato. Un altro conto è se il tuo programma usa male gli oggetti. Ne crea troppi e/o ne tiene troppi referenziati (volutamente o involontariamente). In tal caso la questione non è il gc ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Di per sé no, non c'è. E comunque truschini del genere non si dovrebbero fare. Il punto è: se il tuo programma ha veramente bisogno di molta memoria, allora è un conto ed è bene dare alla JVM un heap space adeguato. Un altro conto è se il tuo programma usa male gli oggetti. Ne crea troppi e/o ne tiene troppi referenziati (volutamente o involontariamente). In tal caso la questione non è il gc ...
    ok, in verità non so ancora quanta memoria possa richiedere.
    sono un attimo in fase di test.
    magari, una volta identificato il quantitavo medio gli imposto direttamente un heap space adeguato come dici te.
    grazie!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.