Ho avuto problemi di memoria con un server. È un'istanza micro amazon, quindi la sua memoria è molto limitata (free -m dice 603 MB). È per questo che ho iniziato con TomcatJVM Overhead Too Big
-server -Xmx290m -Xms290m -XX:MaxPermSize=65m
Tuttavia, il processo di "java" dura circa 86% del totale della memoria, che è 518m. 518-355 = 163 MB di spese generali. Che sembra come un sacco, ed è sospettoso, soprattutto in considerazione che:
- un'applicazione simile riceve un'altra versione JVM su un altro micro esempio non hai in testa questa grande
- stessa seduta applicazione dà a livello locale a soli 40 MB sovraccarico. A livello locale viene eseguito in Windows 7, 64 bit.
La versione di Java sul server problematico è:
java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (amzn-2.3.3.13.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)
La grande discrepanza tra il runtime locale e quello sul server mi fa escludere la possibilità che ci sono alcuni costosi oggetti off-heap (ad es. buffer di byte) nell'applicazione (e non lo utilizzo comunque). So che l'overhead della JVM varia, ma con più di 1/2 dell'heap in quanto l'overhead sembra troppo grande. Quindi quale potrebbe essere la ragione per questo? O è un modo normale di cose?
Si aggiunge anche -server quando lo si esegue localmente? Che JVM hai localmente? – Sorin
Oracle JDK, 7, 64-bit (non sono sul computer di casa adesso, quindi non potrò dare più dettagli per un po '). Non sono sicuro dell'opzione -server, è un buon punto. Ci proverò. – Bozho
come reagisce senza alcun interruttore? i default? – epoch