我正在尝试使用JMC在我的服务器程序中找到问题方法。
当我在本地运行服务器(在Windows上)并从JMC启动Flight Recorder时 - 一切正常。 JMC在Code
选项卡中正确显示数据:热方法,调用树等
但是当我试图在远程平台(在Linux上)上配置服务器时,我得到了一个空窗口。
要在平台上启动JFR,我使用:
/opt/java/java8/bin/jcmd 38390 VM.unlock_commercial_features
/opt/java/java8/bin/jcmd 38390 JFR.start duration=10m compress=true filename=dxstress3_cross_try1.jfr settings=/opt/dxstress/settings_for_jmc.jfc
我使用的是Oracle JDK 8u40
设置文件settings_for_jmc.jfc
我是从JMC导出的。它包含execution_sample设置
<event path="vm/prof/execution_sample">
<setting name="enabled">true</setting>
<setting name="period">10 ms</setting>
</event>
是否有记录或不记录此类数据的选项?我错过了什么?
答案 0 :(得分:0)
如果您未指定自定义设置文件,它是否有效?
如果是,问题最有可能出现在.jfc文件中。它应该在JDK 7/8
上看起来像这样max-height: 700px
如果没有,那可能是一个错误。在Linux上没有使用CLOCK_REALTIME的信号量存在问题,这可能会大大减少样本数量。它固定在7u80和8u25。
要打印当前使用的事件设置,请执行以下操作:
<event path="vm/prof/execution_sample">
<setting name="enabled" control="method-sampling-enabled">true</setting>
<setting name="period" control="method-sampling-interval">10 ms</setting>
</event>
如果启用了vm / prof / execution_sample,则问题出在JVM和采样器上。否则,它很可能在配置中。
如果采样方法正在运行Java代码,则采样器仅创建事件,因此如果您的应用程序以本机旋转,则不会有采样。