社区
Java SE
帖子详情
如何统计一段Java业务代码的CPU执行时间和IO执行时间
catoop
优质创作者: Java技术领域
领域专家: 后端开发技术领域
2019-08-03 06:02:00
如图
:
问题
:
业务代码中,总的时间消耗包含CPU时间 和 IO 时间。
如何通过代码或者其他工具,统计任意一段业务代码的CPU时间和IO时间。
例如针对上面图中的business方法,可以获得CPU累计消耗时间109ms和剩余的IO累计时间消耗。
假设业务方法是不透明的,只能调用,那么调用方如何统计目标方法的这2个时间消耗。
(可以使用代码,或者工具)
请教各位大神!!!
...全文
1499
6
打赏
收藏
如何统计一段Java业务代码的CPU执行时间和IO执行时间
如图: 问题: 业务代码中,总的时间消耗包含CPU时间 和 IO 时间。 如何通过代码或者其他工具,统计任意一段业务代码的CPU时间和IO时间。 例如针对上面图中的business方法,可以获得CPU累计消耗时间109ms和剩余的IO累计时间消耗。 假设业务方法是不透明的,只能调用,那么调用方如何统计目标方法的这2个时间消耗。 (可以使用代码,或者工具) 请教各位大神!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
catoop
2021-04-15
打赏
举报
回复
这个确实很复杂,需要精通内核底层的很多知识,如果有能有一个这样的工具就好了。
冰思雨
2021-04-07
打赏
举报
回复
计算 CPU的使用时长 是一个很复杂的过程,同理,IO时长也是相对会比较复杂,总之,越想精确一些,算法就越麻烦,你要对操作系统,进程调度之类的东西非常了解才有可能实现。
冰思雨
2021-04-07
打赏
举报
回复
楼主的这个需求,是外行人提的吗? 你现在使用的是Java程序,但是,需求,怎么看着像C/C++程序的需求啊? 统计 CPU 和 IO 的操作时长,这个是操作系统级的需求,一般由偏低级的语言才能好实现。 Java语言是运行在虚拟机之上的程序,统计 操作系统之下的 CPU 和 IO 操作(偏硬件方面),是很困难的事情。 Java 语言可以统计的,一般都是函数的执行时长(使用动态代理技术),楼主可以考虑这个方向,统计函数的调用时长吧,这个还靠谱点。 当然,函数的执行时间,很可能无法区分 CPU时长 和 IO时长。
老王就是我
2021-04-02
打赏
举报
回复
没办法统计,system.current也是需要消耗性能的,并不是无损操作
qq_28147505
2021-04-01
打赏
举报
回复
所以最终是如何处理? 不对,业务方法是不透明的,你去调用,那就只有请求总时间了。。 不透明了,你怎么还知道有io,cpu的操作。。
faith.huan
2019-08-04
打赏
举报
回复
可以考虑使用springAop,分别计算business方法耗时(IO+CPU), HttpClientUitl.get方法耗时(IO) ,至于如何将这两个如何绑定到一次处理 可以考虑使用ThreadLocal设置个数字,用于标识 business和HttpClientUtil.get属于一次处理
Java
匿名内部类实战|通用
代码
耗时
统计
工具
Java
匿名内部类 函数式接口 性能测速
IO
文件简介日常开发经常需要
统计
代码
块
执行
耗时,传统写法到处复制start/end
时间
戳,
代码
冗余、耦合严重。本文基于接口 + 匿名内部类封装通用计时工具,一套工具支持任意
业务
代码
测速,演示数值累加、文件复制两大典型耗时场景,适合
Java
初学者理解回调、接口、匿名内部类综合应用。一、传
统计
时方案痛点平时测
一段
代码
耗时,大家都会这么写:
java
运行//
业务
代码
。
从
CPU
利用率到性能瓶颈:深入理解Linux系统
CPU
时间
统计
与排查实践
CPU
利用率是衡量计算资源使用情况的核心指标,它反映了
CPU
执行
有效指令的
时间
占比。其计算原理基于操作系统对用户态、内核态及空闲
时间
的精细
统计
,通过时钟中断和调度器进行
时间
片记账。理解
CPU
利用率的技术价值在于,它能穿透表象,揭示系统真实的负载状况,避免因错误解读导致扩容或调优失误。在实际应用场景中,高
CPU
利用率可能源于计算密集型任务、频繁的系统调用、锁竞争或I/O等待,需要结合上下文切换、负载均衡等指标综合判断。本文通过分析句柄泄露导致软中断(softirq)异常和
CPU
空转的典型案例,并结合火焰图等性
用
java
的
io
做一个
代码
计数器_
Java
中的程序计数器是什么
Java
中的程序计数器是什么程序计数器是当前线程正在
执行
的字节码的地址。程序计数器是线程隔离的,每一个线程在工作的时候都有一个独立的计数器。
JAVA
虚拟机管理的内存区域图1.什么是程序计数器?程序计数器是当前线程正在
执行
的字节码的地址。程序计数器是线程隔离的,每一个线程在工作的时候都有一个独立的计数器。2.字节码的
执行
原理编译后的字节码在没有经过JIT(实时编译器)编译前,是通过字节码解释器进行解...
Java
线上服务
CPU
与内存问题排查实战:从监控到
代码
的完整诊断流程
在
Java
后端开发中,性能优化与问题排查是保障服务稳定性的核心技能。其原理在于深入理解JVM运行时数据区、垃圾回收机制以及线程调度模型。掌握这些底层机制的技术价值在于,能够快速定位线上服务性能瓶颈,避免因
CPU
飙升或内存泄漏导致的系统雪崩,从而提升系统可用性与资源利用率。典型的应用场景包括电商大促、金融交易等高并发
业务
,任何计算密集型任务或内存不当使用都可能引发性能危机。本文聚焦于
Java
服务
CPU
与内存使用率过高的实战排查,系统介绍了如何利用jstack、Arthas、MAT等工具链,结合线程堆栈分析与堆
线上问题排查解决思路-
CPU
利用率高/飙升
不管处于应急的哪个阶段,我们首先必须想到的是恢复问题,恢复问题不一定能够定位问题,也不一定有完美的解决方案,也许是通过经验判断,也许是预设开关等,但都可能让我们达到快速恢复的目的,然后。在大多数情况下,我们都是先优先恢复服务,保留下当时的异常信息(内存dump、线程dump、gc log等等,在紧急情况下甚至可以不用保留,等到事后去复现),等到服务正常,再去复盘问题。这里为了演示,用一个最简单的死循环来模拟
CPU
飙升的场景,下面是模拟
代码
,通过第一步,找出有问题的
代码
之后,观察到线程栈之后。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章