`
iamzhongyong
  • 浏览: 804543 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

快速获取java中的内存和线程信息(MBean)

    博客分类:
  • java
 
阅读更多

    在排查线上问题的时候,我们经常使用jstat、jstack、jmap查看GC、内存、线程的信息,但是有时候我们需要获取一个整体的信息来帮助我们快速定位,类似linux中自带的top命令,简单而全面的系统信息,在网上找了些资料,发现之前有人写了个jtop的工具,能够全面获取java应用的信息,一看作者,原来是阿里的同事,原理是使用了java中的MBean,借这个机会,把MBean的东西简单了解一下。

 

    首先这个工具如何使用:wget https://hatter-source-code.googlecode.com/svn/trunk/jtop/jtop.jar

Usage:

java -jar jtop.jar [options]<pid>[<interval>[<count>]]
-OR-
java -cp jtop.jar jtop [options]<pid>[<interval>[<count>]]
    -size <B|K|M|G|H>             Size,case insensitive (default: B, H for human)
    -thread <N>                   ThreadTop N (default:5)
    -stack <N>                    StacktraceTop N (default:8)
    -excludes                     Excludes(string.contains)
    -includes                     Includes(string.contains, excludes than includes)
    --color                       Display color (default: off)
    --sortmem                     Sortby memory allocted (default: off)
    --summaryoff                  Donot display summary (default: off) 

(1)直接运行jtop.jar获取的信息(sudo -u admin  /java -jar jtop.jar pid   内存、线程、GC、高CPU占用线程的栈信息)

如果想把大小的信息,换算成M或者其他,可以用另外一种方式

sudo -u admin  java -cp  jtop.jar  jtop -size M  PID

(2)查看占用CPU前三的线程栈信息(sudo -u admin java -cp jtop.jar jtop -thread 3 -stack 50 --summaryoff  PID)

 

(1)一些概念

A、MBean

通常是一个java类,它提供接口可以使这个类具有管理功能(如standard MBean,接口中定义的方法使MBean具有管理功能)。

B、MBean server

是管理MBean的一个java类,你需要向MBean server注册一个MBean后,这个MBean才会具有管理功能,MBean server还提供了查询功能和注册监听器的功能,sun提供的只是接口,不同的jmx实现中的MBean server实现也不同。

Mbean有四种常见类型:A、standard MBean;B、dynamic MBean;C、open MBean;D、model MBean

重点介绍一个standard MBean 和dynamic Mbean

standard MBean:这种类型的MBean最简单,它能管理的资源(包括属性,方法,时间)必须定义在接口中,然后MBean必须实现这个接口。它的命名也必须遵循一定的规范,例如我们的MBean为Hello,则接口必须为HelloMBean。

dynamic MBean:必须实现javax.management.DynamicMBean接口,所有的属性,方法都在运行时定义

(2)根据JDK提供的MBean获取信息

1、工厂类获取各个MBean:ManagementFactory

2、内存信息MBean:MemoryMXBean

3、线程信息MBean:ThreadMXBean,可以重点关注dumpAllThreads,把所有的线程信息down下来,然后自己进行运算

4、gc情况信息MBean:GarbageCollectorMXBean

ManagementFactory.getGarbageCollectorMXBeans()获取的是gcMbean的数组

5、类加载Mbean:ClassLoadingMXBean

​​   ​

http://docs.huihoo.com/java/jmx/jmx.html

 

 

 

分享到:
评论
1 楼 di1984HIT 2014-02-16  
呵呵,能提供就不错。

相关推荐

    zabbix-java-gateway.tar.zip

    通过这个Gateway,你可以监控Java应用服务器的性能指标,如内存使用、线程状态、类加载情况以及各种自定义MBean等。这对于那些基于Java技术栈的大型分布式系统来说,是确保系统健康运行不可或缺的工具。 1. **Java ...

    java远程监控,有源码的

    在Java中实现远程监控通常涉及到JMX(Java Management Extensions)框架,这是一种标准的Java API,用于管理系统资源和服务。下面将详细讨论Java远程监控的关键概念、应用场景以及如何使用提供的源码进行实践。 1. ...

    yuancheng.zip

    1. 性能监控:通过JMX,开发者可以获取到CPU使用率、内存分配、线程状态等信息,帮助优化应用性能。 2. 故障诊断:当系统出现问题时,远程监控可以实时反馈异常信息,快速定位问题所在。 3. 自动化运维:结合脚本...

    Java 实例 - 状态监测源代码+详细指导教程.zip

    2. **监控工具**:Java提供了一些内置的工具和API,如JMX(Java Management Extensions),可以用来监控应用程序的状态,包括内存使用、线程信息、类加载器等。此外,还可以利用VisualVM、JConsole等外部工具进行更...

    jvm监控工具visualVM

    支持通过JMX(Java Management Extensions)接口远程监控Java应用,获取自定义的MBean(Managed Beans)信息。 6. **内存快照** 提供内存快照功能,可以对比不同时间点的内存分配情况,帮助识别内存泄漏。 7. **...

    jvisualvm插件JDK1.8_64.zip

    本资源集合了jvisualvm的常用插件,便于开发者快速获取并使用,尤其对于JDK 1.8的内存监测,其便捷性与实用性得到了广大开发者的青睐。 1. **JVisualVM的核心功能** JVisualVM包含了多种功能,其中最突出的是对...

    JMX-jmxapp.rar

    例如,通过JMX,我们可以实时查看应用的内存分配、线程状态、数据库连接池等信息,对于性能调优和故障排查具有重要意义。 总之,JMX是Java世界中一个强大的管理和监控框架,通过`jmxapp`这个实例,我们可以深入了解...

    jdmkrt-jar包

    JMX是一种在Java应用程序中管理和监控各种资源的技术,包括内存、线程、类加载器以及自定义的管理 beans。这个jar包可能包含了实现JMX功能的类库,方便开发者在不需访问Oracle官网注册的情况下进行JMX相关的开发工作...

    使用JMX监控Zookeeper状态Java API

    在分布式系统中,Zookeeper是经常使用的分布式协调服务,用于维护和管理分布式应用程序的配置信息和状态。为了监控Zookeeper的状态,需要使用监控工具来实时监控Zookeeper的运行状态。Java Management Extensions...

    基于JMX的IT系统管理关键技术研究与实现

    在当前快速发展的信息技术领域中,对于IT系统的管理和监控变得日益重要。Java Management Extensions(JMX)作为一种强大的管理框架,为Java平台上的应用程序、组件和服务提供了统一的管理和监控机制。本文旨在深入...

    Lambda Probe

    1. **JVM监控**:Lambda Probe可以展示Java虚拟机(JVM)的各种指标,如内存使用情况(堆内存、非堆内存)、垃圾收集器状态、类加载信息以及线程详细信息。这对于识别内存泄漏和性能瓶颈非常有帮助。 2. **系统资源...

    Tomcat monitor tool

    - **线程分析**:展示运行中的线程详细信息,帮助定位可能导致阻塞或死锁的问题。 - **HTTP连接器统计**:监控HTTP和AJP连接器的活动,包括请求处理时间、并发连接数等。 - **系统资源监控**:查看服务器的CPU...

    葵花宝典面试题

    《葵花宝典面试题》是一份集合了Java技术领域深度和广度的面试资源,旨在帮助求职者或开发者巩固和提升自己的技能。其中包含了"葵花宝典"这一...不断学习和实践,是Java开发者在快速发展的技术环境中保持竞争力的关键。

    java_dashboard

    通过JMX,应用可以暴露管理信息,如内存使用情况、线程统计、类加载器状态等,这些信息可以通过MBean(Managed Beans)进行访问。 至于可视化部分,项目可能利用D3.js或Highcharts等数据可视化库来绘制图表,将复杂...

    WebLogic MBean instrumentation utility-开源

    2. **运行时数据采集**:通过MBeanStat,用户可以实时获取服务器的运行时数据,如CPU利用率、内存使用情况、线程状态等。这些数据对于诊断性能瓶颈、预防故障和调优具有重要意义。 3. **脚本支持**:MBeanStat提供...

    windows下的tomcat监控器

    JMX提供了丰富的MBeans(Managed Beans),每个MBean对应一个可管理的对象,通过操作这些MBeans,我们可以获取到Tomcat服务器的详细信息。 在Windows环境下安装Tomcat监控器,你需要确保Tomcat服务器已经启用了JMX...

    TOMCAT的线程池源码

    例如,Tomcat线程池提供了详细的MBean接口,允许管理员在运行时监控和调整线程池的状态,这对于故障排查和性能调优非常有帮助。 总结来说,Tomcat的线程池源码设计精巧,兼顾了性能与可管理性。通过深入学习和理解...

    网络游戏-基于JMX的网络业务管理方法及其应用系统.zip

    3. 故障排查:通过JMX,可以获取到详细的错误日志和堆栈跟踪,有助于快速定位和修复问题。 4. 扩展性:JMX支持插件式架构,方便添加新的管理功能,如新游戏模块的监控或第三方服务的集成。 三、JMX在网络业务管理中...

Global site tag (gtag.js) - Google Analytics