2010-07-15 7 views
1

J'ai une webapp Tomcat Java qui traite le GC Java lorsqu'il est sous charge. Je pense que cela est dû à une combinaison d'une grande quantité d'objets de courte durée avec une quantité inconnue d'objets modérément à vie longue.Comment générer l'histogramme des durées de vie des objets Java

Pour valider cette théorie, je veux trouver un outil qui me permettra de déterminer la durée de vie de l'objet pour tous les objets alloués (ou tous les 10 objets etc pour de meilleures performances). Idéalement, la sortie finale sera un histogramme montrant le nombre relatif d'objets qui vivent pendant des durées différentes.

Je pense que cet outil sera probablement construit au-dessus de l'API Instrumentation ou du JVMTI. S'il n'y a pas de bons outils qui font déjà cela, j'apprécierais aussi les suggestions sur les interfaces de la JVM qu'il serait préférable d'utiliser pour écrire un tel outil.

+0

Avez-vous essayé JMX + VisualVM? Ou sonde? –

+0

Exécutez également un analyseur de code statique sur le code. Cela pourrait indiquer certains sujets de préoccupation. –

+0

Un bon analyseur libre est l'analyseur de mémoire Eclipse (vous n'avez pas besoin d'installer Eclipse). Après avoir redémarré l'application fonctionne-t-elle bien pendant un certain temps ou commence-t-elle à se débattre dès la sortie? Ce dernier pourrait indiquer que vous n'avez tout simplement pas assez de RAM disponible. – Preston

Répondre

0

J'ai maintenant commencé à écrire un outil pour faire ce que j'ai demandé à l'origine. Le code actuel se trouve ici:

http://wiki.github.com/mchr3k/org.inmemprofiler/

Jusqu'à présent, j'ai réussi à obtenir un histogramme textuel de toutes les allocations d'objets par nombre d'instances. Cela n'inclut pas les allocations de tableau qui sont gérées différemment.

Je travaille actuellement sur l'ajout d'informations de taille d'instance ainsi que le suivi des allocations de tableau en utilisant le JVMTI.

+0

Cet outil peut maintenant suivre les tailles d'objets et les traces d'allocation. – mchr

Questions connexes