2012-03-05 6 views
5

Posso prendere in giro il tuo cervello per un problema di memoria?Consumo di memoria per l'applicazione web java (300 MB troppo alto?)

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

Non sembra che ci siano perdite, perché si stabilizza e 300 MB, senza aumentare 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

+2

La tua domanda non contiene informazioni sufficienti per permetterci di formulare risposte utili. L'utilizzo della memoria non è direttamente collegato a LOC; dipende da cosa stai facendo in quelle righe. Dovremmo vedere il codice e/o una buona descrizione della funzionalità per poter rispondere in modo intelligente. –

+0

Quali informazioni posso fornire? – Joe

+0

Come ridimensionare ci vorrebbe qualche analisi del tuo codice. Questo non sembra ridicolmente alto, almeno per me. Il mio server web ed eclissi insieme (2 processi Java) gira intorno a 1gig di memoria. Il nostro servizio web è un enorme numero di linee però ... – kand

risposta

4

Il numero di LOC non è un indicatore di quanto mucchio un'applicazione Java sta per usare; non c'è correlazione tra l'una e l'altra.

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

2

La quantità di codice (LOC) raramente ha un grande impatto sull'utilizzo della memoria dell'applicazione, dopotutto sono le variabili e gli oggetti memorizzati che occupano gran parte della memoria. Per me, 300 megabyte non suona molto, ma ovviamente dipende dallo scenario di utilizzo specifico:

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

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

Non posso fare promesse, ma non lo faccio Penso che devi preoccuparti. Gestiamo un paio di app Web sul lavoro tramite Glassfish, anche utilizzando l'ibernazione, e ognuna utilizza circa 800-900 MB in dev, spesso con due domini in esecuzione di ciascuna dimensione.

+0

Sono tutte anche applicazioni di produzione che sono state utilizzate da oltre 2 anni –

0

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.

Problemi correlati