Il processo di espansione mucchio fa influire sulle prestazioni. Tuttavia, gli effetti dipendono dal tipo di prestazioni di cui si sta parlando.
Un criterio di prestazione è la percentuale di tempo del processore utilizzata per "eseguire la garbage collection"; cioè "rendimento". I GC che ottimizzano il throughput tendono a funzionare meglio con un grande heap. Quindi, in questo caso, una semplice analisi dice che farai meglio l'allocazione dell'heap alla dimensione che ti aspetti di essere richiesta ... invece di iniziare in piccolo e fare affidamento sul GC per espandere l'heap.
Un altro criterio di prestazione è il tempo di pausa. Tuttavia, il comportamento dei collettori di "bassa pausa" è troppo complicato per lo stile semplicistico di analisi di cui sopra. (E non so come funziona in pratica ...)
C'è un aspetto che si applica su tutta la linea. Supponendo che l'utilizzo dell'heap dell'applicazione raggiunga uno stato (approssimativamente) stazionario e presumendo che raggiunga quello stato nella fase iniziale della vita della JVM, le varie spese generali relative alle prestazioni coinvolte nel raggiungimento dello stato stazionario (ovvero i costi generali di "riscaldamento" dell'applicazione).) tenderà ad essere insignificante.
fonte
2013-12-15 01:49:13
http://stackoverflow.com/questions/15338261/optimizing-java-application-using-xms-and-xmx – assylias
Quanto tempo stai perdendo esattamente? – Ingo
Poiché il benchmarking della JVM non è così semplice (warm-up), non so se il risultato sia buono o meno. Dipende ovviamente dall'algoritmo ma allo stato dell'arte non posso rispondere con dati corretti – BlacK