2017-07-17 2 views
0

J'ai actuellement du code Java que je voudrais profiler. J'ai décidé d'utiliser Java Mission Control après avoir lu des choses prometteuses à ce sujet. Cependant, chaque ressource que j'ai consultée jusqu'à présent me dit d'abord commencer le processus que je veux profiler d'abord, puis seulement "attacher" ou profiler le code de Mission Control une fois qu'il est déjà lancé (par exemple cette vidéo d'oracle: https://youtu.be/WMEpRUgp9Y4?t=14m56s).Java Mission Control Listener?

Existe-t-il un moyen de démarrer le processus avec le profilage dès le départ? Merci

Répondre

0

Il existe un moyen de démarrer un enregistrement de profilage lorsque vous démarrez le processus.

Exemple: Exécution d'un enregistrement de profilage pendant 10 minutes.

java -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=10m,name=Test,filename=recording.jfr,settings=profile -jar target/highcpu-0.0.1.jar 

Voir mon article pour plus de détails: Using Java Flight Recorder

0

Il est pas très bien documenté, mais il y a la possibilité. Vous devez utiliser cette option jvm

-XX: + UnlockCommercialFeatures -XX: + -XX enregistreur de vol: FlightRecorderOptions =

Les deux premiers sont obligatoires alors que le dernier doit être configuré avec différents paramètres que vous pouvez trouver expliqué here. Il n'est pas facile de comprendre la signification de chaque paramètre, mais avec quelques essais et erreurs, vous pouvez trouver un bon ensemble d'options assez facilement.

Tout comme référence celui-ci est une configuration fonctionnelle minimale:

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/tmp,maxage=6h,settings=default MyApp