JDK 16以降は以下でOKです。
jcmd <PID> Compiler.perfmap
perf用ですのでこのコマンドはLinuxのみです。
これはAdd diagnostic command to write Linux perf map file で入りました。
JDK 8や11などのJDK 15以前だとjcmdにこのコマンドがありません。別途perf-map-agentを使います。
ビルドしてcreate-java-perf-map.sh <PID>を実行します。/tmp/perf-<pid>.mapファイルが生成されます。
-XX:+DumpPerfMapAtExit
JDK 16以降ではjcmd <PID> Compiler.perfmapの代わりに-XX:+DumpPerfMapAtExitオプションを使う方法もあります。以下のように使います。
perf record -- java -XX:+DumpPerfMapAtExit HelloWorld
JVMをシャットダウンする直前にマップファイルを生成してくれます。perfコマンド実行時にはJITコンパイルされたすべてのメソッドのシンボル名を確実にマップファイルに出力するように-XX:-UseCodeCacheFlushingを付与しますが、-XX:+DumpPerfMapAtExitを付与すると自動的にUseCodeCacheFlushingを無効にしてくれます(ソースコードでも確認)。明示的に-XX:+UseCodeCacheFlushingを付与するとこの自動的な設定を上書きしてフラッシュを有効にできます。
これはAdd -XX:+DumpPerfMapAtExit to write Linux perf map file on VM shutdown で入りました。