java - 如何找出调试符号的含义
问题描述
我正在分析OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)
主要由I/O
文件到套接字组成的 Java ( ) 应用程序。从文件中读取数据,即时压缩并发送到套接字。
我用 perf 做了一些 cpu-cycles 采样,得到了以下图片:
我注意到的事情是sys_futex
消耗了大部分 CPU(精确地_raw_spin_unlock_irqrestore
- 11.44%),而我从它的名字中猜到的所谓_ZN12GCTaskThread3runEnv
符号与GC
.
问题:
如何找出这个符号
_ZN12GCTaskThread3runEnv
负责什么?为什么
futex
es (futex_wait
,futex_wake
) 是最消耗 CPU 时间的?我预计这种copy_user_enhanced_fast_string
由于高I/O
活动性而居于首位,但它只需要0.56%
显示的样本。
AFAIK_raw_spin_unlock_irqstore
代表等待 I/O 事件,但为什么它比 I/O 本身消耗更多的 CPU?
解决方案
推荐阅读
- c# - 如何在 linq2Db 中加载子集合?
- javascript - ReactJS 视频播放器 (react-player) - 如何检查视频是否(完全)播放?
- python - 匹配熊猫数据框中的字符串(正则表达式?)以获取销售优惠
- database - 插入前的 SQLite 触发器
- r - 收听列表中的响应式
- mysql - 用于 MySQL 的 Azure 数据库 - 缓慢的大量插入
- c# - 读取没有互操作的 Excel 宏
- php - zf3 监听另一个类中触发的事件
- python - 有人可以解释为什么 print("red" == "blue" or 3 >= 3) 返回 True
- r - 运行过滤器 pandoc-citeproc 时出错:找不到可执行的 pandoc-citeproc