发布于 2021-11-15 03:05:19
如果您想要对线程进行示例,则应该使用jdk.ExecutionSample,因为开销要低得多。
没有办法将simultaneously.配置为只记录单个线程,或者让jdk.ExecutionSample示例所有线程
解释
负责发出jdk.ExecutionSample的采样器定期挂起一个Java线程并遍历它的堆栈,但是所有其他线程都可以继续运行。堆栈跟踪存储为ID,因此如果重复,只需要重写几个字节。
jdk.ThreadDump事件的实现将所有Java线程带到safepoint,这意味着应用程序将完全停止。运行Java线程只会在生成的机器代码中位于safepoint轮询的位置停止。这意味着抽样将不那么准确。当所有线程停止时,所有堆栈都由一个线程遍历,这意味着其他内核将等待。结果被写成文本,所以如果相同的堆栈跟踪多次发生,那么所有的帧都需要重写。
https://stackoverflow.com/questions/69963136
复制相似问题