Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    84

    Come monitorare la memoria di Sistema (RAM) con java

    Buongiorno a tutti,

    sto sviluppando un software che mi deve permettere di inviare ad un server un file xml con tutti i dati del PC sul quale sta girando. Quindi processore, Sistema operativo, RAM, Stato del disco, ecc...tutto questo per poter monitorare le macchine dei miei clienti e fornire loro assistenza quando qualcosa va storto.

    Bene...ovviamente sto sviluppando java, sennò non sarei in questa sezione , e vorrei chiedervi se conoscete un modo per recuperare la memoria totale, libera e/o occupata del sistema. Ho cercato all'infinito su google, ma trovando solo sistemi per recuperare la memoria che occupa la JVM, che a me non interessa.

    Devo precisare che il sistema deve funzionare per tutti i S.O.

    VI ringrazio tantissimo in anticipo

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

    Re: Come monitorare la memoria di Sistema (RAM) con java

    Originariamente inviato da sandalf
    vorrei chiedervi se conoscete un modo per recuperare la memoria totale, libera e/o occupata del sistema.
    Serve una libreria apposita, es. JSysmon o SIGAR (o altre che eventualmente esistono)
    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
    Oct 2008
    Messaggi
    84
    Grazie mille per l'aiuto...ora provo

    Non l'avrei mai trovato senza il tuo aiuto

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    84
    Chiedo però un'ultima cosa perchè non riesco a chiamare i metodi delle classi all'interno delle librerie. Come ambiente di sviluppo uso netbeans e come libreria ho scelto jsysmon perchè mi server semplicemente la memoria RAM e quindi è inutile installare il pacchettone di sigar che poi non lo uso. Mi aiutereste ad importarla e a chiamare i metodi dal mio progetto?

    Grazie mille

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    3
    Ciao a tutti, sono nuovo di questo forum, anche se lo consulto da molto tempo!
    Sto sviluppando un programma in java che ad un certo momento ha bisogno di sapere quanta memoria ram libera e totale ha il computer sul quale sta girando l'applicazione.
    Ho letto che ci sono due librerie che possono essermi utili.
    Io sto provando ad usare JSysmon ma non ho capito come usarla...
    Ho creato un elemento MemoryMonitoringData ma i suoi metodi mi restituiscono sempre degli indici, non la quantità totale di memoria libera e totale (in MB per intenderci).
    Sapreste darmi un consiglio?
    Grazie mille!!!

    Simone
    Se vuoi e puoi, allora devi!

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    84
    Ciao!!

    purtroppo Java lavorando sulla virtualMachine non accede direttamente alle informazioni del sistema e quindi le librerie di Java non servono quasi a niente..al tempo avevo letto che bisognava creare delle librerie native in linguaggio C e importarle dentro..io però per motivi di tempo non potevo star li a capire come funzionava e tutto..quindi ho fatto un programma in C che mi prende le info sulla ram e poi con java lo avvio con exec e recupero le info che stampa il programma in C leggendo il flusso dati. Purtroppo non mi sono mai messo a capire come funziona JSysmon quindi non posso aiutarti.

    Spero lo stesso di esserti stato utile

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    3
    Ciao,
    grazie per la risposta, non ci avevo pensato ad una soluzione simile...
    Comunque ho capito che quello che volevo fare io è impossibile, ti spiego il mio problema:
    sto facendo un programma che deve lavorare su dei database xml, in particolare l'utente gli da in pasto un xml e il programma deve convertirlo in un formato particolare. solo che il database non è sempre quello ovviamente, e può spaziare da db da 4KB a db da 2GB di dimensione.
    Mi sono accorto che nel fare la conversione di cui parlavo prima, con database piccoli non ha problemi, mentre se salgo di dimensione il programma termina sollevando l'eccezione OutOfMemoryError. Questo è dovuto al fatto che la JVM non ha abbastanza memoria per poter lavorare su quel db.
    Avevo quindi pensato di far controllare al mio programma quanto era grosso il db xml che l'utente gli passa e, se troppo grosso, espandere la memoria della JVM fino a metà della ram disponibile.
    Il problema è che nel momento in cui parte il mio programma, la JVM è già stata creata quindi (a quanto ho capito) non posso più modificare la memoria di quest'ultima...
    Correggimi se sbaglio...

    Spero di essere stato chiaro nell'esporre il mio problema...

    Grazie!
    Se vuoi e puoi, allora devi!

  8. #8
    Si Solda88, quando hai già lanciato il tuo programma non puoi modificare la dimensione massima di heap, cioè di memoria riservata alla jvm.
    Perchè invece non fai partire il tuo programma con le seguenti impostazione:
    codice:
    -Xms32m <Dimesione di heap allo startup> 
    -Xmx128m <Massima dimessione di heap concessa>
    In questo modo dici alla jvm di allocare allo startup dell'applicativo 32mega di memoria ma che se ne ha bisogno può arrivare fino ad un massimo di 128 mega.
    Ovviamente 32 e 128 sono solo dati di esempio puoi scegliere te i valori più congeniali alla tua applicazione.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    3
    Si, ho provato ad usare quelle impostazioni, ed infatti funziona.
    L'unico problema è che quei parametri sono fissi.
    Io volevo cercare non metterli fissi in modo tale da rendere il programma il più adattabile possibile, in modo che possa funzionare dai pc più datati a quelli più recenti...
    Però mi sa che è impossibile...
    Già che ci sono, ti chiedo una cosa:
    io quelle deu stringhe le ho modificare nel file eclipse.ini (uso eclipse come editor), oppure se chiamo il programma da linea di comando le metto tra "java" e "-jar"; Si può creare un archivio jar del mio programma che abbia di default quei parametri?
    Se vuoi e puoi, allora devi!

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.