2010-08-26 18 views
14

Mi chiedevo se la dimensione del file jar ha implicazioni per la peformance della Java Virtual Machine?La dimensione di un file jar influisce sulle prestazioni della JVM?

Ci sarà un punto in cui il file jar diventa troppo grande che la JVM non sarà in grado di funzionare in modo efficace?

+0

Recenti e correlati: http://stackoverflow.com/questions/3314815/does-a-war-file-size-affect-in-some-way-the-application-and-or-application-server – JoseK

risposta

10

Sì, la dimensione del file jar ha implicazioni sulle prestazioni. La domanda più appropriata è, ha delle implicazioni significative? La risposta a questa domanda è no.

Sì, c'è un punto in cui il file jar diventa troppo grande e influenza la JVM. Non so dove sia, ma è vicino alla dimensione della memoria di sistema. Se la JVM non è in grado di caricare l'intero file JAR e le librerie Java nella memoria di sistema senza scambiare, ciò inciderà sicuramente sulle prestazioni.

Questo non è qualcosa di cui ti devi preoccupare. Non includere file JAR nel classpath che non vengono utilizzati. Non includere un mucchio di codice nel file JAR del progetto che non viene utilizzato. Dubito fortemente che tu stia creando un'applicazione ovunque vicino alle dimensioni richieste per influire sulle prestazioni della JVM.

+0

Yup , ci sono pochissime volte in cui le dimensioni del barattolo sono importanti. Probabilmente è più importante quando si distribuisce un'app desktop, dato che nessuno vuole un download di 500 MB per un programma semplice. Per le applicazioni lato server, ci sarebbe voluto un sacco di "lavoro" per essere così grande che importava ... – bwawok

+1

Sono completamente d'accordo con questo, e la mia esperienza è stata molto simile. Il solito posto in cui la prestazione viene danneggiata molto prima che la dimensione della classe sia negli algoritmi o se si dispone di una classe molto grande. – aperkins

+1

I maggiori colpevoli di gonfiore del barattolo sono applicazioni aziendali/Web, in particolare quando vengono creati con Maven. Vengono trascinate così tante dipendenze e dipendenze delle dipendenze che non è raro che un'app di dimensioni modeste superi i 50 Mb di file jar. – locka

0

A mio parere, la dimensione del barattolo non è il fattore da considerare quando si cerca di aumentare le prestazioni.

Se si dispone di vasetti grandi, significa che si dispone di molto codice. Se hai molto codice perché lavori su un progetto complesso, tutto è ok per me. Se si dispone di vasetti grandi per un progetto "semplice", ciò potrebbe significare che il codice deve ripensarci => Le classi ben progettate sono spesso il modo per ottenere la dimensione del codice più piccola e quindi i vasetti più piccoli.

Problemi correlati