/ / Consumo di memoria per l'app java web (300 MB troppo alta?) - java, spring, hibernate, memory, velocity

Consumo di memoria per l'app java web (300 MB troppo alta?) - java, spring, hibernate, memory, velocity

Posso prendere in giro il tuo cervello per un problema di memoria?

La mia app java, che non è enorme (come 14000 LOC), utilizza circa 300 MB di memoria, ma è in esecuzione su Tomcat con un database MySQL. Sto usando Hibernate, Spring e Velocity.

Non sembra che ci siano perdite, perché lo fannosi stabilizza e 300 MB, senza crescere ulteriormente. (Inoltre, ho fatto un po 'di profilazione.) C'è stata qualche preoccupazione dal mio team, tuttavia, sulla quantità di spazio che sta usando. Questo sembra alto. Hai qualche suggerimento su come ridurlo?

Ogni pensiero è apprezzato.

Joe

risposte:

4 per risposta № 1

Il numero di LOC non è un indicatore della quantità di heap che un'app Java utilizzerà; non c'è correlazione tra l'una e l'altra.

300 MB non è particolarmente grande per un serverapplicazione che memorizza i dati nella cache, ma è piuttosto grande per un'applicazione che non contiene alcun tipo di dati memorizzati nella cache o nella sessione (ma poiché questo include il server Web stesso, 300 MB è generalmente ragionevole).


2 per risposta № 2

La quantità di codice (LOC) raramente ha molto impattosull'utilizzo della memoria della vostra applicazione, dopo tutto, sono le variabili e gli oggetti memorizzati che occupano gran parte della memoria: per me, 300 megabyte non suonano molto, ma ovviamente dipende dal vostro specifico scenario d'uso:

  • Quanta memoria ha il server di produzione?
  • Quanti utenti ci sono con questa quantità di memoria utilizzata?
  • Quanto cresce l'utilizzo della memoria per sessione utente?
  • Quanti utenti ti aspetti di essere in concomitanza accedere all'applicazione in uso produttivo?

Sulla base di questi, è possibile eseguire alcuni calcoli, ad es. il tuo ambiente di produzione è pronto a gestire la quantità di utenti che ti aspetti, hai bisogno di più hardware, forse hai bisogno di serializzare alcuni dati su disco / db, ecc.


0 per risposta № 3

Non posso fare promesse, ma non ti credodevi preoccuparti Gestiamo un paio di app Web al lavoro tramite Glassfish, anche utilizzando l'ibernazione, e ognuna utilizza circa 800-900 MB in dev, spesso con 2 domini in esecuzione su ciascuna di queste dimensioni.


0 per risposta № 4

Se è necessario ridurre il proprio ingombro, assicurarsi almeno di utilizzare Velocity 1.6 o versione successiva. 1.5 ha sprecato un bel po 'di memoria.