2015-10-12 17 views
5

Quali sono i motivi tecnici per cui non esiste un modo per salvare un qualche tipo di immagine di JVM dopo averlo riscaldato? Supponendo che voglio riprendere sulla stessa piattaforma (quindi qualsiasi materiale JIT funzionerebbe ancora).Serialize Stato HotSpot

+0

Si prega di fornire il vostro sforzo. – manetsus

risposta

6

A seconda di quale JVM si utilizza, esiste già tale funzionalità. JRockit è reported to be able a, per il consumatore "normale" JRE a JEP 145 esisteva, ma ovviamente non ce l'ha fatta.

Ci sono alcune domande su questo argomento già qui su SO, prova ad esempio this one.

Per la normale JVM Oracle non esiste alcuna funzione di questo tipo, è possibile armeggiare con lo CodeCache affinché funzioni di compilazione il più presto possibile o "warm up" JVM.

Una cache JVM persistente comporta alcuni rischi, come nel caso di tutte le cache. Lo stato JIT dovrà essere invalidato e ricalcolato quando il codice cambia. Se ciò non accadesse, eseguirai il tuo programma con il vecchio codice. Questo sembra essere il motivo principale per cui la cache persistente di questo disco è limitata alla JVM "professionale". Anche l'ottimizzazione JIT che si verifica all'avvio è considerata abbastanza veloce da poterla ripetere ad ogni avvio, eliminando il rischio di correre con codice obsoleto.