Я хочу профилировать приложение Java внутри контейнера Docker с помощью JFR. Как мне это сделать? Приложение, которое я хочу профилировать, не принадлежит мне, поэтому я не могу изменить Dockerfile или какой-либо исходный код.
Docker run cmd:
docker run -itd --privileged --memory="_g" --cpuset-cpus x-y -p
p1:p1 -p p2:p2 -p p3:p3 -p p4:p4 -p p5:p5 --net=host -v
<hostDirectory>:<containerDirectory> --name=<containerName> <image>
Если приложение Java работает на последнем JDK, вы можете подключиться к процессу с помощью jcmd и начать запись, т.е.
jcmd <pid> JFR.start name=test
jcmd <pid> JFR.dump name=test filename=recording.jfr