Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何找出调试符号的含义_Java_Linux_Performance_Jvm - Fatal编程技术网

Java 如何找出调试符号的含义

Java 如何找出调试符号的含义,java,linux,performance,jvm,Java,Linux,Performance,Jvm,我正在评测Java(OpenJDK运行时环境(build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12))应用程序,它主要由I/O文件到套接字组成。数据从文件中读取,动态压缩并发送到套接字 我使用perf进行了一些cpu周期采样,得到了以下图片: 我注意到的是,sys\u futex消耗了大部分CPU(大概是\u raw\u spin\u unlock\u irqrestore-11.44%)和所谓的\u ZN12GCTaskThread3runEnv符号,

我正在评测Java(
OpenJDK运行时环境(build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)
)应用程序,它主要由
I/O
文件到套接字组成。数据从文件中读取,动态压缩并发送到套接字

我使用perf进行了一些cpu周期采样,得到了以下图片:

我注意到的是,
sys\u futex
消耗了大部分CPU(大概是
\u raw\u spin\u unlock\u irqrestore
-11.44%)和所谓的
\u ZN12GCTaskThread3runEnv
符号,我从它的名字猜到它与
GC
有关

问题:

  • 如何找出此符号
    负责什么

  • 为什么
    futex
    es(
    futex\u wait
    futex\u wake
    )最耗时?我预计由于高
    I/O
    活动而导致的
    copy\u user\u enhanced\u fast\u string
    排序将位于顶部,但在所示示例中只需
    0.56%


  • AFAIK
    \u raw\u spin\u unlock\u irqstore
    代表等待I/O事件,但为什么它比I/O本身消耗更多的CPU呢?

    这有趣吗@rghome问题是我正在分析的应用程序没有定期挂起。它的工作方式是在FETX上耗费太多的CPU时间。用来将代码> > ZNXXX < /Cord>符号转换成可读的C++标识。当然。尝试
    -e syscalls:sys\u enter\u futex
    。或者只使用常规的cpu配置文件-如果sys_futex是一个热函数,它肯定会出现在配置文件中。HotSpot使用信号进行配置。所以是的,在gdb中忽略它们是可以的。