Visualizzazione dei risultati da 1 a 6 su 6

Discussione: attesa ferma

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    90

    attesa ferma

    Ho fatto un semplicissimo programmino in java e ne ho fatto un jar, cosicchè tutti (più o meno) lo possano utilizzare.
    Il programma deve essere quindi eseguito dicitando

    cd /percorso
    java -jar NomeFile.jar

    esiste un modo per creare un exe o un eseguibile in generale che permetta di fare questa cosa senza scrivere niente da consolle?
    Inoltre, è possibile fare in modo che questo venga eseguito ogni tot minuti?

    Altrimenti, è possibile fare ciò da java? cioè che una volta lanciato il programma esso si esegua e poi attenda tot minuti prima di rieseguirsi?!

    grazie!
    Se hai paura di chiedere, vuol dire che ti vergogni ad imparare...

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

    Re: attesa ferma

    Originariamente inviato da Eberk89
    cd /percorso
    java -jar NomeFile.jar
    A dire il vero, se l'associazione delle estensione jar è configurata dal JRE basta fare doppio click sul jar.

    Originariamente inviato da Eberk89
    esiste un modo per creare un exe o un eseguibile in generale che permetta di fare questa cosa senza scrivere niente da consolle?
    Ci sono anche tools appositi ma .... la portabilità?

    Originariamente inviato da Eberk89
    Inoltre, è possibile fare in modo che questo venga eseguito ogni tot minuti?
    Questo è un altro discorso .... e dipende da chi deve schedulare la esecuzione (il S.O.? Su Windows si può fare, ad esempio).

    Originariamente inviato da Eberk89
    Altrimenti, è possibile fare ciò da java? cioè che una volta lanciato il programma esso si esegua e poi attenda tot minuti prima di rieseguirsi?!
    Non è da pensare come una "riesecuzione" della applicazione. C'è un timer apposito, java.util.Timer.
    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
    Mar 2006
    Messaggi
    90

    Re: Re: attesa ferma

    Originariamente inviato da andbin
    A dire il vero, se l'associazione delle estensione jar è configurata dal JRE basta fare doppio click sul jar.
    su windows si, su linux no (almeno, su ubuntu 9.10 non mi va)! (ma per quello dovrei riuscire a mettere su un sh)
    grazie per la segnalazione di Timer!
    Se hai paura di chiedere, vuol dire che ti vergogni ad imparare...

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    90
    ok, ho implementato il Timer che esegue il Task ogni 5 minuti: perfetto!
    Ciò che ancora non mi convince è l'utilizzo della ram: 14.8 MiB per un programma che dorme mi sembrano veramente un po' troppi!
    In teoria non devo mantenere nessun dato tra una esecuzione e l'altra del task, tutto ciò che gli serve è salvato su un file esterno che va a leggersi quando gli serve!
    Dovrei forse forzare il garbage collector? O renderei ancora peggiori le cose?
    Se hai paura di chiedere, vuol dire che ti vergogni ad imparare...

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Eberk89
    Ciò che ancora non mi convince è l'utilizzo della ram: 14.8 MiB per un programma che dorme mi sembrano veramente un po' troppi!
    Di per sé è il runtime java che comunque occupa abbastanza. Anche uno stupidissimo programma con un main() che fa una sola sleep di un tot di secondi utilizza come minimo 6~7 Megabyte di memoria. ... è Java!
    E se è questo che ti preoccupa allora, lasciamelo dire, forse Java non è il linguaggio che fa per te ..

    Originariamente inviato da Eberk89
    In teoria non devo mantenere nessun dato tra una esecuzione e l'altra del task
    Intanto bisognerebbe vedere bene cosa hai fatto esattamente nel tuo codice, quali classi hai definito, cosa contengono, quanti oggetti hai creato, cosa referenziano.
    Senza vedere questo non posso certo dire io se hai fatto davvero il minimo come utilizzo di oggetti o se per caso tieni referenziati (tra un "lavoro" e l'altro) oggetti che invece potresti anche non tenere referenziati.

    E comunque c'è ancora un'altra cosa da considerare: come la JVM gestisce la dimensione del "heap". Quello che tu vedi a livello di memoria usata da un "task manager" del S.O. è solo una "visione" globale del processo java, che non necessariamente corrisponde agli oggetti Java che sono realmente tenuti in vita. Mi spiego meglio: supponi che dal task manager vedi che il processo Java occupa 40 megabyte. Anche se il programma Java rilasciasse un cospicuo numero di oggetti in modo che vadano in pasto al garbage collector, tu non necessariamente vedresti dal task manager che la memoria occupata diminuisce!!

    Cosa alloca la JVM a livello "nativo" come memoria, sono generalmente affari suoi interni e può certamente avere tutta una sua logica (che tipicamente dipende e varia da una implementazione all'altra della JVM) per stabilire a) se b) quando c) quanto ridimensionare in più o in meno come memoria "nativa" del processo.

    Se vai a vedere sul sito sun c'è della documentazione che descrive quali sono i criteri/logiche per la (ri)allocazione del heap. Ma sono dettagli della JVM Sun e comunque se inizi ad impergolarti in questi dettagli ..... non finisci più ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    90
    grazie mille della spiegazione!!
    mah, non è che la cosa preoccupi me particolarmente, mi preoccupa che quelli che si scaricheranno sto programma, che sta a dormire tutto il tempo e ogni 5 minuti, se va bene, fa qualcosa, vedranno un processo da 15 MB!
    però in cambio della portabilità, effettivamente, questo è nulla! L'ho lasciato acceso tutta la notte perchè mi ero accorto che alla prima riesecuzione la memoria occupata da 14.8MB era salita a 15.3 e avevo paura che continuasse a salire a quel passo... e invece java ha fatto il suo bel lavoro e stamattina l'ho trovato a 16.qualcosa!
    Grazie ancora per le delucidazioni!
    Se hai paura di chiedere, vuol dire che ti vergogni ad imparare...

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.