Java 线程:解释正在运行的 JVM 的线程状态

2023-12-23

Java 线程始终处于以下十种状态之一:

NEW: Just starting up, i.e., in process of being initialized.
NEW_TRANS: Corresponding transition state (not used, included for completness).
IN_NATIVE: Running in native code.
IN_NATIVE_TRANS: Corresponding transition state.
IN_VM: Running in VM.
IN_VM_TRANS: Corresponding transition state.
IN_JAVA: Running in Java or in stub code.
IN_JAVA_TRANS: Corresponding transition state (not used, included for completness).
BLOCKED: Blocked in vm.
BLOCKED_TRANS: Corresponding transition state.

未使用状态(UNINITIALIZED) 已从列表中删除。

虽然上面给出了状态的定义,但我正在寻找“经验法则”来解释正在运行的应用程序服务器的给定线程状态设置。并且,更具体地说:

假设一个实时应用程序服务器具有以下线程统计信息(使用以下方法获得)jstack http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstack.html)在不同的时间点:

  • 100 个线程:35BLOCKED, 65 IN_NATIVE
  • 113 线程:35BLOCKED, 77 IN_NATIVE, 1 IN_VM
  • 52 线程:38BLOCKED, 1 IN_JAVA, 6 IN_NATIVE, 7 IN_VM
  • 120 线程:39BLOCKED, 1 IN_JAVA, 80 IN_NATIVE
  • 94 线程:34BLOCKED, 59 IN_NATIVE, 1 IN_NATIVE_TRANS

对于五个统计数据中的每个线程 - 可以推断出有关 JVM 整体状态的什么信息?IE。 “在这种情况下,JVM 看起来正在空闲等待请求”、“机器正忙于处理请求”等。


此级别的输出无法提供足够的信息来做出此类陈述。

举个例子,考虑 BLOCKED 状态:有很多事情可能导致线程被阻塞。其中两个正在等待来自客户端的数据,并等待数据从数据库返回。在第一种情况下,您的应用程序处于空闲状态,在第二种情况下,您的应用程序过载。

编辑:没有查看 jstack 的输出,我想这两个条件也可以表示为 IN_NATIVE。然而,同样的评论也成立:您不知道他们在做什么,因此您无法对整个应用程序做出任何陈述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 线程:解释正在运行的 JVM 的线程状态 的相关文章

  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • CXF Swagger2功能添加安全定义

    我想使用 org apache cxf jaxrs swagger Swagger2Feature 将安全定义添加到我的其余服务中 但是我看不到任何相关方法或任何有关如何执行此操作的资源 下面是我想使用 swagger2feature 生成
  • HDFS:使用 Java / Scala API 移动多个文件

    我需要使用 Java Scala 程序移动 HDFS 中对应于给定正则表达式的多个文件 例如 我必须移动所有名称为 xml从文件夹a到文件夹b 使用 shell 命令我可以使用以下命令 bin hdfs dfs mv a xml b 我可以
  • PHP 脚本不断执行 mmap/munmap

    我的 PHP 脚本包含一个循环 它只不过是回显和取消引用指针 如 tab othertab i gt 中的内容 直到昨天 这个脚本开始变得非常慢 比以前慢了 50 倍 之前 它一直运行良好 使用 strace 后 我发现 90 的情况下 脚
  • 一种使用 Java Robot API 和 Selenium WebDriver by Java 进行文件上传的解决方案

    我看到很多人在使用 Selenium WebDriver 的测试环境中上传文件时遇到问题 我使用 selenium WebDriver 和 java 也遇到了同样的问题 我终于找到了解决方案 所以我将其发布在这里希望对其他人有所帮助 当我需
  • Java 页面爬行和解析之 Crawler4j 与 Jsoup

    我想获取页面的内容并提取其中的特定部分 据我所知 此类任务至少有两种解决方案 爬虫4j https github com yasserg crawler4j and Jsoup http jsoup org 它们都能够检索页面的内容并提取其
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 迁移到 java 17 后有关“每个进程的内存映射”和 JVM 崩溃的 GC 警告

    我们正在将 java 8 应用程序迁移到 java 17 并将 GC 从G1GC to ZGC 我们的应用程序作为容器运行 这两个基础映像之间的唯一区别是 java 的版本 例如对于 java 17 版本 FROM ubuntu 20 04
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

    我正在开发 Spring Hibernate MySql 应用程序 该应用程序尚未投入生产 我目前使用 Hibernatehbm2ddl该功能对于管理域上的更改非常方便 我也打算用Flyway用于数据库迁移 在未来的某个时候 该应用程序将首
  • 使用 SAX 进行 XML 解析 |如何处理特殊字符?

    我们有一个 JAVA 应用程序 可以从 SAP 系统中提取数据 解析数据并呈现给用户 使用 SAP JCo 连接器提取数据 最近我们抛出了一个异常 org xml sax SAXParseException 字符引用 是无效的 XML 字符
  • 为什么 Collections.counter 这么慢?

    我正在尝试解决罗莎琳德的基本问题 即计算给定序列中的核苷酸 并在列表中返回结果 对于那些不熟悉生物信息学的人来说 它只是计算字符串中 4 个不同字符 A C G T 出现的次数 我期望collections Counter是最快的方法 首先
  • 如何在 Maven 中显示消息

    如何在 Maven 中显示消息 在ant中 我们确实有 echo 来显示消息 但是在maven中 我该怎么做呢 您可以使用 antrun 插件
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • Springs 元素“beans”不能具有字符 [children],因为该类型的内容类型是仅元素

    我在 stackoverflow 中搜索了一些页面来解决这个问题 确实遵循了一些正确的答案 但不起作用 我是春天的新人 对不起 这是我的调度程序 servlet
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n

随机推荐

  • 解析 @username 的帖子

    我建立了一个类似 Twitter 的 replies 允许用户通过用户每日帖子相互联系 类似于 stackoverflow 以此作为指导https github com kltcalamay sample app compare origi
  • Spark DataFrame 和重命名多列 (Java)

    有没有更好的方法可以同时为给定 SparkSQL 的所有或多个列添加前缀或重命名DataFrame比多次调用dataFrame withColumnRenamed 一个例子是 如果我想检测更改 使用完整外连接 然后我就剩下两个了DataFr
  • Tensorflow 对象检测 api 验证数据大小

    我正在从对象检测 API 运行教程 并将 Oxford 数据集与 ResNet Faster RCNN 一起使用 当我通过运行 eval py 评估经过训练的模型时 Tensorboard 返回大约 0 95 的平滑精度值 我的问题是它评估
  • 我可以在 Django generic.ListView 中拥有多个列表吗?

    作为 Django 初学者 我正在研究 django 文档提供的教程 网址为https docs djangoproject com en 1 5 intro tutorial04 https docs djangoproject com
  • Android - 从收到的短信中获取日期和时间

    我正在开发一个 Android 应用程序 我需要在其中保存发件人 短信正文 日期和时间收到短信 现在我可以捕获消息正文和发件人 但我无法获取短信的日期和时间 即使我查看了 stackoverflow 中的一些帖子 但它们都没有捕获日期和时间
  • NSView 子类中的鼠标单击事件

    我有一个 NSView 子类 它使用 OpenGL 上下文进行初始化 并具有一堆鼠标事件处理 onMouseDown 等 我有一个使用它的应用程序 它有一个包含视图的主 Cocoa 窗口 并且所有鼠标事件都正常工作 但是 我现在尝试在另一个
  • 自动调整 UICollectionView 高度以适应其内容大小

    我有一个 UICollectionView 一个在集合视图中创建新单元格的按钮 我希望 UICollectionView 根据其内容大小调整其大小 当有一两个单元格时 UICollectionView 很短 如果有很多单元格 UIColle
  • 对话框服务内容中的换行符被忽略

    在剑道对话服务窗口的内容中插入换行符 rogress 中的 Kendo Angular 6 对话框 换行符将被忽略 尝试了 html 元素 br 和 n n 例如它在连续一行中显示字符文本 n n n const dialog Dialog
  • 如何向 CRM 2011 进行身份验证?

    我想建立一个简单的网站 客户可以在其中下订单和查看产品 此数据是我的 Microsoft Dynamics CRM 2011 环境 该数据是特定于客户的 因此我需要有关登录用户的信息 用户凭据存储在 CRM 2011 中 使用这些凭据 用户
  • Jython 的内存限制

    如何为我的 Jython 程序设置 JVM 内存限制 Java 的 Xmx 选项 我明白 Jython2 5引入 J 选项以便将选项发送到 JVM jython J Xmx8000m 但是 我必须与java1 6 0 23 上的 Jytho
  • android OAuth-2.0 google 使用 webview 登录获取用户信息

    我正在创建允许用户使用 facebook 或 google 帐户登录的应用程序 他们按下 登录 按钮 然后系统会要求他们使用 facebook 或 google 登录 当他们选择其中之一时 会弹出网络视图 问题是谷歌身份验证 阅读了一些文章
  • 清理带有标题的 URL 的最佳方法是什么

    清理 URL 的最佳方法是什么 我正在寻找这样的网址 什么是最好的头痛药物 我当前的代码 public string CleanURL string str str str Replace str str Replace str str R
  • 在不知道 T 类型的情况下获取 Task 的结果 [重复]

    这个问题在这里已经有答案了 我正在开发一个 C 系统 一个类有一个返回 a 的函数System Threading Tasks Task对象并具有属性System Type返回类型 当 ReturnType 为 null 时 我知道该方法返
  • Python 中的 MySQL 连接器不允许 LOAD DATA INFILE 语法

    我正在尝试将文本文件发送到 MySQL 数据库 我正在尝试使用 python 3 2 中的 mysql 连接器来执行此操作 问题与 LOAD DATA INFILE 语法有关 你可以在上面找到我的代码 我的第一个问题是有没有办法解决这个问题
  • Android:使用 Intent setResults 来回传递数据

    我正在为 Android 创建一个基于 GPS 的应用程序 有 2 个活动 Main 和 LocNames Main 显示我的地图 LocNames 是获取用户想要的源和目的地 我想在用户从菜单中选择 LocNames 时启动 LocNam
  • Tensorflow 2.0 和 Java API

    注意 我已经解决了我的问题并将代码发布在底部 我正在使用 TensorFlow 后端处理必须在 Java 中进行 我从 中取出了其中一个模型https developers google com machine learning crash
  • 如何为异步方法编写单元测试用例?

    我想通过模拟依赖项来编写单元测试用例 整体流程如下 我们有一个WorklistLoader它有一个异步方法LoadWorklistItemsAsync 为了完成这个任务WorklistLoader依赖于下层 API 我想模拟 QueryMa
  • 在不处于编辑模式时对 tableView 中的行重新排序[重复]

    这个问题在这里已经有答案了 在我的应用程序中 我已经实现了重新排序行的选项 但我使用默认的编辑按钮来显示删除按钮和三行图标来移动行 但我见过一个iOS应用程序允许用户直接移动行 而不需要进入编辑模式 我将不胜感激任何建议来实现这种方式 以允
  • linux 补丁忽略行号

    我有一个产品 例如版本 1 并且对其进行了一些自定义更改 例如版本 1 x 我正在对这些版本运行差异并创建补丁文件 现在该产品有更高版本 例如版本 2 我希望将从版本 1 和版本 1 x 创建的补丁应用于版本 2 这里的困难在于行号不会保持
  • Java 线程:解释正在运行的 JVM 的线程状态

    Java 线程始终处于以下十种状态之一 NEW Just starting up i e in process of being initialized NEW TRANS Corresponding transition state no