我有一个Java程序,它只运行大约20-30秒,我想分析一下它。
在每次启动时手动启动jvisualvm分析器是不可靠的,因为在操作UI时会损失几秒钟时间。
有没有一种方法可以分析整个可执行文件,就像不再工作的旧-Xhprof:cpu=samples
一样?
发布于 2018-10-18 03:42:46
使用飞行记录器,您可以添加到命令行
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
-XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,settings=profile
https://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/run.htm#JFRRT176
它只记录新TLAB上的内存分配,因此我将其设置得比缺省值小得多,以获取更多样本。
-XX:TLABSize=128k
您需要从$JAVA_HOME/bin
目录运行jmc
来打开创建的.jfr
文件。
我发现这比VisualVM更难使用,但能以更少的噪音产生更详细的结果。也就是说,分析器本身导致的分配要少得多。
https://stackoverflow.com/questions/52861208
复制相似问题