Ho un'applicazione java per la ricerca di file e di solito raggiunge il limite di heap predefinito molto presto. Non ho accesso a tutti i sistemi su cui verrà installato, quindi voglio aumentare la dimensione dell'heap JVM nell'applicazione stessa. Qualcuno mi può aiutare come posso farlo a livello di codice nella mia applicazioneCome aumentare la dimensione dell'heap java a livello di programmazione
risposta
vedere questo post su aumento di dimensioni java heap:
increase the java heap size permanently?
Forse anche voi potrebbe pulire una parte del codice per ridurre l'utilizzo della memoria.
migliori saluti
Non esiste un'API standard per farlo.
Si consiglia di utilizzare Java Web Start per richiamare l'applicazione (può essere utilizzata per le applicazioni locali nell'ultimo Sun Java 6) in quanto consente di specificare i valori per questo.
È quindi possibile avere tre o quattro collegamenti ciascuno che puntano esattamente agli stessi file ma con dimensioni heap "Tiny", "Medium", "Large", "Gigantic".
Dai uno sguardo a qualcosa come launch4j e considera la distribuzione di file eseguibili in cui puoi controllare il limite quando qualcuno avvia l'esecuzione della tua applicazione.
Non sarà possibile farlo a livello di programmazione.
Per le applicazioni desktop, suggerisco di fornire un programma di avvio che possa specificare la dimensione della memoria desiderata. Oltre alla configurazione della JVM, è anche possibile fornire un'icona, associazioni di file, ecc.
Vedere questo SO question per alternative di implementazione.
L'impostazione -Xmx a un concerto non significa che JVM allocherà quella quantità di memoria all'avvio. La JVM allocherà solo -Xms (più overhead) finché non sarà necessario più spazio su heap. Avete bisogno di proteggere i vostri utenti dalla memoria virtuale che si agita o da un'allocazione di memoria fallita dal sistema operativo? In caso contrario, imposta Xmx su un valore elevato. Nota che le JVM a 32 bit di Windows ignorano spesso le impostazioni Xmx superiori a 1.2Gig, quindi è meglio non richiedere più di un concerto per sicurezza.
Le JVM a 32 bit non ignorano le dimensioni massime dell'heap massimo, ma non si avviano. Basta impostare -mx1200m o simile. (-mx funziona altrettanto bene di -Xmx) –
- 1. Aumentare la dimensione heap in Java
- 2. Dimensione finestra di dialogo Impostazione a livello di programmazione
- 3. Come posso aumentare la dimensione dell'heap .NET?
- 4. Modifica della dimensione di UITableView a livello di programmazione
- 5. Come aumentare la dimensione dell'heap java in netbeans?
- 6. Android: Come impostare la dimensione di un layout a livello di programmazione
- 7. Impostare NSWindow Size a livello di programmazione
- 8. Android - Come cambiare la modalità Timepicker a livello di programmazione?
- 9. Come aumentare la dimensione della finestra DOXBox?
- 10. Come cambiare la dimensione del carattere della barra degli indirizzi in Chrome a livello di programmazione
- 11. Come ottenere la dimensione della pagina del kernel Linux a livello di programmazione
- 12. Come impostare la dimensione del telaio UIScrollView a livello di programmazione?
- 13. JAVA_OPTS per aumentare la dimensione heap
- 14. Ingrandire un MKMapView a livello di programmazione
- 15. , verificare a livello di programmazione
- 16. come inviare sms a livello di programmazione?
- 17. Come disabilitare SparkUI a livello di programmazione?
- 18. Acquisire a livello di programmazione un'area specifica
- 19. Ionico come tornare a livello di programmazione
- 20. Come nascondere UITabBarController a livello di programmazione?
- 21. Come impostare windowDrawsSystemBarBackgrounds a livello di programmazione?
- 22. Come configurare ELMAH a livello di programmazione?
- 23. Come attivare "Installato" a livello di programmazione?
- 24. Come programmare un'attività a livello di programmazione
- 25. Come aprire selezionare a livello di programmazione
- 26. Come utilizzare AcroTextExtractor.exe a livello di programmazione?
- 27. Come aggiungere la macro excel 2010 a livello di programmazione
- 28. Android - Come toccare la voce ListView a livello di programmazione
- 29. Come bloccare a livello di programmazione la schermata in Android?
- 30. come avviare la programmazione a livello di chip
Perché non si sceglie di aggiungere uno script di avvio (bat o sh) con parametri iniziali definiti per jvm (come Xmx) e distribuirlo insieme all'applicazione stessa. –
Quale sarebbe il punto di fissare un limite se qualche app potesse semplicemente aumentarlo a piacimento? –
non è possibile modificare a livello di codice i vincoli di memoria in un'applicazione in esecuzione –