Strumenti disponibili per il debug problemi di produzione in applicazioni Java [chiusa]

StackOverflow https://stackoverflow.com/questions/2931398

  •  05-10-2019
  •  | 
  •  

Domanda

a chiedermi Cosa sono vari strumenti e tecniche là fuori per problemi di produzione debug di applicazioni Java. Come,

  • Quali sono i modi e gli strumenti per prendere discariche filo?
  • Quali sono i modi e gli strumenti per prendere mucchio discariche?
  • Quali sono gli strumenti per analizzare quanto sopra discariche?

(Assunzione tutti sono in ambiente Linux / Unix)

È stato utile?

Soluzione

  

Quali sono i modi e gli strumenti per prendere discariche filo?

Per una discarica filo, è possibile utilizzare JConsole, VisualVM o, più semplicemente, inviare un QUIT segnale al processo di destinazione

kill -QUIT <pid> 

o

kill -3 <pid>

Dato che Java 5, c'è anche jstack che è indipendente dalla piattaforma e ha un opzione piacevole -m per stampare Java e frame nativi (modalità mista).

  

Quali sono i modi e gli strumenti per prendere mucchio discariche?

Con Sun VM, jmap, Sole JConsole , Dom < a href = "https://visualvm.dev.java.net/heapdump.html" rel = "nofollow noreferrer"> VisualVM , SAP JVMMon. Per IBM VM, controllare questa pagina . In realtà, il wiki Eclipse MAT ha una bella Ottenere una sezione Dump Heap che riassume tutto le opzioni.

  

Quali sono gli strumenti per analizzare quanto sopra discariche?

Per filo discariche io uso TDA - Dump Analyzer Discussione (per Sun JDK) e IBM Discussione e Monitor Dump Analyzer (per IBM JDK). Samurai è anche molto bello (funziona come un tail -f e raccoglie discariche filo dal std / stderr automaticamente, ma può anche leggere "-verbose: gc" log) ed è stato testato contro le macchine virtuali da parte di Apple, BEA, HP, Sun e IBM (può anche leggere javacore di IBM)

.

Per mucchio discariche, io uso VisualVM (per Sun JDK) oppure IBM Heap Dump Analyzer (solo per IBM JDK) o über impressionante Eclipse MAT seconda mie esigenze. Il secondo è in grado di lavorare con hprof binario heap dump (prodotto da Sun, HP, SAP, ecc ... JVM), discariche IBM System (dopo le pre-elaborazione), e discariche mucchio portatile IBM (PhD) provenienti da una varietà di piattaforme IBM).

Altri suggerimenti

Supponendo JDK 6, Date un'occhiata al seguente articolo per ottenere discariche filo di un programma in esecuzione:

http://java.sun.com/developer/technicalArticles/Programming/ stacktrace /

È possibile utilizzare jhat per fare analisi mucchio:

http://java.sun.com /javase/6/docs/technotes/tools/share/jhat.html

Se si vuole fare dump di memoria diano un'occhiata al jmap:

http://java.sun.com /javase/6/docs/technotes/tools/share/jmap.html

In alternativa, se avete bisogno di fare un po 'di più in un'analisi approfondita un'occhiata a un profiler come Yourkit:

http://www.yourkit.com/

Ci sono anche queste due cose che possono interessarti:

Non v'è alcun set di strumenti standard per la JVM. Questi sono vendor dipendente, e si consiglia di consultare la documentazione.

Per Sun Java 6 il programma VisualVM è molto, molto utile per ottenere un profilo e pila rapida traccia di un programma in esecuzione.

Lo strumento che uso per questo tipo di debug di un JVM Sun sono

  • jstack per prendere un filo discarica
  • jmap per prendere una memoria / heap dump, o istogramma
  • eclissi mat per l'analisi post del heap dump prodotto da jmap
  • vm visiva ha una bella interfaccia utente per l'analisi diretta del vm (può anche prendere mucchio e discariche filetto)

problemi di debug con le allocazioni di memoria, InMemProfiler possono essere utilizzati al comando linea. In diretta vs allocazioni raccolti possono essere tracciati e raccolti gli oggetti possono essere suddivisi in segmenti in base alle loro vite.

In modalità traccia questo strumento può essere utilizzato per identificare la fonte di allocazioni di memoria .

E penso che il modo migliore per eseguire il debug dell'applicazione Java in ambiente di produzione non è dump e così via, ma una buona managment di log .

Si veda ad esempio slf4j .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top