2014-06-13 20 views
8

Abbiamo un JRE installato nel nostro ambiente di produzione, ma non un JDK. Le versioni di JRE e OS sono sotto.Come si produce un dump dell'heap con solo un JRE?

[[email protected] ~]$ java -version 
java version "1.6.0_45" 
Java(TM) SE Runtime Environment (build 1.6.0_45-b06) 
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode) 
[[email protected] ~]$ uname -a 
Linux mymachine.mydomain.com 3.10.35-43.137.amzn1.x86_64 #1 SMP Wed Apr 2 09:36:59 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 

Non sembra come se la funzione “jmap” è presente in qualsiasi punto del sistema, e senza accesso root, non sono in grado di installarlo in qualsiasi posizione del sistema. Cosa posso fare per ottenere un dump dell'heap (ad esempio, produrre un file .hprof)?

Inoltre, stiamo usando JBoss 7.1.3.AS se questo è importante.

+0

Penso che tu abbia bisogno di JDK, lasciaci aspettare e vedere se qualcuno ha altra soluzione. – kosa

+1

A partire da jre 7, oracle fornisce un assembly server-jre che include questi strumenti. http://www.oracle.com/technetwork/java/javase/downloads/server-jre7-downloads-1931105.html –

+0

Buono a sapersi. L'upgrade non sincronizzato del nostro JRE non è un'opzione al momento. – Dave

risposta

7

Gli strumenti integrati come jmap, jconsole e jvisualvm sono disponibili solo in un JDK. Un'altra opzione consiste nell'aggiungere l'argomento VM -XX:+HeapDumpOnOutOfMemoryError che indica alla JVM di generare automaticamente un dump dell'heap quando si verifica un errore OutOfMemoryError e l'argomento -XX:HeapDumpPath per specificare il percorso per il dump dell'heap.

Se non è possibile aggiornare il JRE di utilizzare strumenti come quelli nel server JRE 7 (http://www.oracle.com/technetwork/java/javase/downloads/server-jre7-downloads-1931105.html), potrebbe essere necessario prendere in considerazione strumenti di profiling di terze parti come JProfiler o quelli lista here.

+0

Sono aperto ad altri strumenti diversi da jmap che possono produrre un dump dell'heap. Il fatto è che dovrei essere in grado di eseguirlo dalla mia home directory. – Dave

+0

Forse un profiler di terze parti sarebbe utile qui. Risposta aggiornata – manouti

0

L'unico modo sembra essere quello di comprimere l'SDK6 locale e metterlo da qualche parte sul server. Quindi aprire una console remota e dalla directory bin di tale SDK eseguire il dump di JRE.

Se il cliente vieta il caricamento di file eseguibili, siete sfortunati, naturalmente.