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.
Avez-vous essayé JMX + VisualVM? Ou sonde? –
Exécutez également un analyseur de code statique sur le code. Cela pourrait indiquer certains sujets de préoccupation. –
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