`
tmuffamd
  • 浏览: 28279 次
  • 性别: Icon_minigender_2
  • 来自: 重庆
社区版块
存档分类
最新评论

linux java 分析工具jstact- java stack

 
阅读更多

我们使用jdk自带的jstack来分析。当linux出现cpu被java程序消耗过高时,以下过程说不定可以帮上你的忙: 

1.top查找出哪个进程消耗的cpu高 
21125 co_ad2    18   0 1817m 776m 9712 S  3.3  4.9  12:03.24 java                                                                                           
5284 co_ad     21   0 3028m 2.5g 9432 S  1.0 16.3   6629:44 java                                                                                           
21994 mysql     15   0  449m  88m 5072 S  1.0  0.6  67582:38 mysqld                                                                                         
8657 co_sparr  19   0 2678m 892m 9220 S  0.3  5.7 103:06.13 java 

这里我们分析21125这个java进程。 

2.top中shift+h查找出哪个线程消耗的cpu高 
先输入top,然后再按shift+h 
21233 co_ad2    15   0 1807m 630m 9492 S  1.3  4.0   0:05.12 java                                                                                           
20503 co_ad2_s  15   0 1360m 560m 9176 S  0.3  3.6   0:46.72 java                                                                                           
21134 co_ad2    15   0 1807m 630m 9492 S  0.3  4.0   0:00.72 java                                                                                           
22673 co_ad2    15   0 1807m 630m 9492 S  0.3  4.0   0:03.12 java 

这里我们分析21233这个线程,并且注意的是,这个线程是属于21125这个进程的。 

3.jstack查找这个线程的信息 
jstack [进程]|grep -A 10 [线程的16进制] 
即 

Java代码  收藏代码
  1. jstack 21125|grep -A 10 52f1  


-A 10表示查找到所在行的后10行。21233用计算器转换为16进制52f1,注意字母是小写。 
结果: 

Java代码  收藏代码
  1. "http-8081-11" daemon prio=10 tid=0x00002aab049a1800 nid=0x52bb in Object.wait() [0x0000000042c75000]  
  2.    java.lang.Thread.State: WAITING (on object monitor)  
  3.      at java.lang.Object.wait(Native Method)  
  4.      at java.lang.Object.wait(Object.java:485)  
  5.      at org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:416)  
 
 
 

Java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stacknative stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stacknative stack的信息如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

2、命令格式
jstack [ option ] pid
jstack [ option ] executable core
jstack [ option ] [server-id@]remote-hostname-or-IP

3、常用参数说明

1)、options 

executable Java executable from which the core dump was produced.

(可能是产生core dumpjava可执行程序)

core 将被打印信息的core dump文件

remote-hostname-or-IP 远程debug服务的主机名或ip

server-id 唯一id,假如一台主机上多个远程debug服务 

2)、基本参数:

-F’jstack [-l] pid’没有相应的时候强制打印栈信息

-l长列表打印关于锁的附加信息,例如属于java.util.concurrentownable synchronizers列表.

-m打印javanative c/c++框架的所有栈信息.

-h | -help打印帮助信息

pid 需要被打印配置信息的java进程id,可以用jps查询.

4、使用示例

 #jstack -l 进程号> jstact  导出日志文件

#less jstact  查看文件

 

 

http://wenku.baidu.com/link?url=9e-JEB1WreNARlL39kejO3gKbWdGppJEFUCNlKDVwvboZtgAn_7eka36KgU9UA4a9HLprACkpBvHujXquUR-hmJh5QtwIs2FQnr-fFljkvi

分享到:
评论

相关推荐

    bacnet-stack-0.8.0

    这可能包括设备控制软件、监控系统或者数据分析工具。由于BACnet-stack-0.8.0的开源性质,开发者可以深入研究源代码,优化性能,或者根据特定需求添加新的功能。 总的来说,Bacnet-stack-0.8.0是一个强大且灵活的...

    redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz

    这里的 "redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz" 文件是一个针对 Red Hat Enterprise Linux 7 (RHEL7) 平台的 64 位版本的 Redis Stack 6.2.6 包。这个压缩包包含了运行 Redis Stack 所需的所有组件,...

    Z-Stack-Mesh-1.0.0,是TI(德州仪器)发布的基于CC2530的ZigBee协议栈

    总的来说,Z-Stack-Mesh-1.0.0是TI为CC2530提供的一个强大的ZigBee解决方案,它涵盖了构建高效、可靠、可扩展的物联网网络所需的所有组件和工具。通过深入学习和利用这套工具,开发者能够快速地开发出满足特定需求的...

    android ndk-stack使用说明。

    通过本文档,我们将详细介绍如何使用`ndk-stack`工具来进行调试,帮助开发者更轻松地定位问题。 #### 二、环境配置与准备 ##### 2.1 配置项目目录 在项目目录中,需要确保已经正确配置了`jni`目录下的`...

    Z-Stack 3.0.2.rar

    3. 配置Z-Stack:根据你的应用需求,使用Z-Stack提供的配置工具(如ZNP-PROG或ZConfig)设置网络参数、设备角色、安全选项等。 4. 编写应用代码:利用Z-Stack的API编写你的应用程序,实现设备功能和网络交互。 5. ...

    opc-ua-stack.jar包

    OPC UA java开发使用的jar包,最新代码编译的jar包版本1.4.0,欢迎下载使用。

    ndk-stack调试 cocos2d-x

    ndk-stack 是 Android NDK 中的一个命令行工具,用于分析和调试Native 代码。它可以将崩溃的日志信息转换成可读的调用栈信息,从而帮助开发者快速定位和解决问题。 ndk-stack 的使用方法 在使用 ndk-stack 之前,...

    Linux-storage-stack-diagram_v4.10.png

    linux storage stack diagram ,linux storage stack diagram ,linux storage stack diagram

    java-stack-trace

    -javaagent:java-stack-trace-1.0-SNAPSHOT-jar-with-dependencies.jar=[m:method name|f:file name] 方法前缀可以用m:method name指定 m: 代表Method方法 method name: 需要打印堆栈的方法的前缀 方法前缀也可以用f...

    Z-Stack 3.0.2 和 2.5.1协议栈

    - 3.0.2版可能提供了更丰富的API接口,简化了开发者的工作,同时可能升级了开发工具,提供更好的调试和分析功能。 - 2.5.1版的API和开发工具可能是早期设计,可能需要开发者投入更多时间和精力进行学习和调试。 5...

    TI BLE-STACK-CC2540-CC2541

    TI BLE-STACK-CC2540-CC2541是Texas Instruments(TI)公司推出的针对其蓝牙低功耗(Bluetooth Low Energy, BLE)芯片CC2540和CC2541的官方开发库。这个库包含了必要的软件工具和资源,用于开发基于这些芯片的BLE...

    bacnet-stack-0_bacnet-stack_bacnetexample_BACNETRelease_jackqwc_

    该BACnet协议栈库 提供了BACnet应用层,网络层和媒体访问(MAC)层通信服务。它是适用于嵌入式系统,Windows,Linux或其他操作系统的开源免版税库。 包括示例BACnet客户端和服务器应用程序。

    java-Press-out-the-stack-.zip_out

    在Java中,我们可以使用`java.util.Stack`类来实现压栈操作。初始化一个空栈,然后遍历查询结果集,每次遇到一个新节点,将其转换为自关联的对象(如`MenuNode`),并压入栈中。如果当前节点有父节点,我们将栈顶...

    understanding-of-the-Linux-network-protocol-stack-_网络协议栈

    对Linux网络协议栈结构的理解.Linux的协议栈基于分层的设计思想,总共分为四层,从下往上依次是 :物理层,链路层,网络层,应用层。

    Linux-IO性能优化基础工具和实践

    Linux-IO性能优化基础工具和实践: 基础篇-Linux IO stack overview 基础篇-read syscall IO stack 工具篇-iostat数据可靠吗 工具篇-blktrace原理和应用 工具篇-debugfs应用 Cache server机械盘IO性能瓶颈分析 实践...

    java-sizeof-0.0.4:一个查看java对象占用内存大小

    "java-sizeof-0.0.4"是一个用于分析Java对象内存占用的工具,它可以帮助开发者更好地理解对象在运行时的内存消耗。这个工具提供了查看对象实例大小的能力,这对于调试和性能优化非常有用。"java-sizeof-0.0.4"包含三...

    Z-STACK协议栈

    《Z-STACK协议栈详解与应用...总结,Z-STACK协议栈是构建Zigbee网络的关键工具,其强大的功能和易用性使其在物联网行业中具有广泛的应用。通过深入理解和实践,开发者可以利用Z-STACK构建出高效、可靠的无线网络系统。

    Webstack-Guns-1.0.jar

    本项目这是一个纯静态的网址导航网站,项目基于bootstrap前端框架开发,基于Java开发的后台系统 框架:Guns Springboot

    EtherCAT-Slave-Stack-Code-Tool

    EtherCAT-Slave-Stack-Code-Tool 是一个专门为 EtherCAT 从站开发所设计的工具,它包含了从站节点软硬件配置的重要功能。这个工具的核心作用在于帮助工程师生成用于驱动从站硬件的 XML 文件,该文件包含了从站设备的...

Global site tag (gtag.js) - Google Analytics