Java小案例-如果您的 Java 应用程序在不做任何事情时正在消耗 CPU,您如何确定它在做什么?

前言

我正在调用供应商的 Java API,在某些服务器上,JVM 在登录 API 后似乎进入了低优先级轮询循环(CPU 使用率为 100%)。其他服务器上的同一应用程序不会出现此行为。这发生在 WebSphere 和 Tomcat 上。环境设置起来很棘手,因此很难尝试在 Eclipse 中进行分析。

有没有办法分析(或其他检查方法)在 Tomcat 中运行的现有 Java 应用程序,以找出处于这种 spinwait 状态时正在执行的方法?当应用程序处于此状态时,它只执行一种方法(供应商的方法)。供应商无法复制该行为(当然)。

解决

JRockit 任务控制延迟分析器。

JRockit 附带的延迟分析器向您显示当 JVM 什么都不做时它正在"做什么"。在最新版本中,您可以看到以下延迟:

  • Java 等待/阻塞/睡眠/停放。
  • 文件输入/输出
  • 网络 I/O
  • 内存分配
  • GC 暂停
  • JVM 延迟,例如代码生成和类加载
  • 线程暂停

该工具会在延迟发生时为您提供堆栈跟踪。您可以通过多种不同方式查看延迟数据(聚合跟踪、作为直方图、在线程图中等)。该工具还允许您查看线程之间的转换,例如当一个线程通知另一个线程时。

开销可以忽略不计,并且与许多其他工具不同,它可以在生产环境中使用。这篇博文给你一个简单的介绍,程序可以再这里下载。

它可以免费用于开发!

联系方式

关于文章中提到的工具可以通过关注公众号《编程乐学》获取对应资料,同时,公众号还有更多有趣的项目以及关于学习编程的笔记资料大家可以看看,欢迎大家进行留言。

相关推荐
SL_staff19 小时前
从配置失效到逻辑复用:JVS-Logic 如何构建可治理的业务编排中枢
java·spring·产品
特立独行的猫A19 小时前
一份 Markdown 发十个平台:cspub 一稿多投
java·后端·python
文丑颜不良啊20 小时前
LeetCode1961~1980题目解析
java·leetcode
文丑颜不良啊20 小时前
LeetCode2001~2020题目解析
java·leetcode
用户37215742613520 小时前
Java 批量提取 Word 文档中的图片并保存到本地
java
SL_staff20 小时前
BI项目失败率90%?JVS如何用三阶闭环构建可落地的数据生产力平台
java·开源·全栈
nice_lcj5201 天前
ThreadLocal 入门:它是怎么隔离数据的、为什么会导致内存泄漏
java·开发语言·后端·面试·并发编程·内存泄漏·threadlocal
紧跟先前的步伐1 天前
Go AI Agent 实战 28|Agent 的预算、超时与停止条件
开发语言·人工智能·后端·ai·golang
秋天的怀念_David1 天前
算法一千零一夜 · 第二十六夜 协议的母语
java·spring boot·算法
灿飞1 天前
Kotlin与Java虚拟机八:控制流与 when:卫语句、上下文相关解析与穷尽性
java·kotlin