Java 工具(jmap,jstack)在linux上的源码分析(一)
来源:互联网 发布:网站源码众筹 编辑:程序博客网 时间:2024/05/23 10:19
在我们常用的Jstack, Jmap 用于分析java虚拟机的状态的工具,通过起另一个虚拟机通过运行sun.tools包下的java文件,去跟踪另一个虚拟机的状态。
如果让你设计一个跟踪另一个进程的方法,你也通常会考虑这几种常用的方式。
第一种,就是通知被跟踪的进程,让进程执行相应的消息,同时对该消息做出反应。
第二种,就是通过内核的调用,直接能够访问进程的内存,堆栈情况,通过分析被跟踪的进程的内存结构,从而知道当前被跟踪的进程的状态。
第一种方式
优势:
对调用者和被调用者只要达成简单的通讯协议,调用者无需知道被调用者的逻辑,结构,只需要简单的发送命令的方式,被调用者能够接受到命令,并且对该命令进行回应就可以。
缺点:
如果被调用者当时的状态本来就不正常,或者繁忙,没办法对该命令做出响应,那这个跟踪进程往往是在规定的等待时间里,无法返回正确的需要的信息。其次被调用者在分析的过程中,有可能需要暂停进程中的其他的线程,而对被跟踪的进程有一定的影响。
第二种方式
优势:
通过内核的支持,访问被跟踪的内存,并作出快照,后台分析,很少影响被跟踪的进程。
缺点:
这种方式需要对被跟踪程的内存分配和使用非常的了解,无法解耦,而本身系统内核调用也会出问题。
Java工具类中也是大致实现了这2中方式,工具中会先选择第一种方式,如果发现第一种方式不能成功,将会建议使用-F参数,也就是第二种方式。
我们先讲第一种方式。
既然是需要向被跟踪进程发出命令,在linux中可以选择多种方式进行进程中通讯 共享内存,文件之类,其中创建socket的文件实现通讯是比较简单的方法。
下面是整个的流程图:
- Java 工具(jmap,jstack)在linux上的源码分析(一)
- Java 工具(jmap,jstack)在linux上的源码分析(一)
- Java 工具(jmap,jstack)在linux上的源码分析(五) -F 参数的bug
- Java 工具(jmap,jstack)在linux上的源码分析(二)信号处理
- Java 工具(jmap,jstack)在linux上的源码分析(四)safe point
- Java 工具(jmap,jstack)在linux上的源码分析(二)信号处理
- Java 工具(jmap,jstack)在linux上的源码分析(四)safe point
- Java 工具(jmap,jstack)在linux上的源码分析(三)执行的线程vm thread
- Java 工具(jmap,jstack)在linux上的源码分析(三)执行的线程vm thread
- Java 工具(jmap,jstack)在linux上的源码分析(六) -F 参数 如何读取线程列表
- Java 工具(jmap,jstack)在linux上的源码分析(六) -F 参数 读取动态链接共享库文件中的符号表
- jstat java工具在linux上的源码分析
- 【Java】3.Java性能监控工具 笔记(jps 、jstack、jmap,jstat,process explorer)
- jdk工具之jmap(java memory map)、 mat之四--结合mat对内存泄露的分析、jhat之二--结合jmap生成的dump结果在浏览器上展示
- jdk命令行工具(jps+jstat+jinfo+jmap+jstack)
- JVM常用分析工具JPS/JINFO/JSTACK/JSTAT/JMAP详解
- JVM常用分析工具JPS/JINFO/JSTACK/JSTAT/JMAP详解
- JVM三(2):jmap、jstack、jstat 等jvm分析工具
- 推荐一个python IDE: eric
- android 关闭软键盘
- [转] Java内部类的作用分析
- Android中@Override错误的解决方法
- Subversion快速入门教程
- Java 工具(jmap,jstack)在linux上的源码分析(一)
- 在webView中,屏幕密度会影响显示效果
- [转]各种流行的编程风格
- js将控件隐藏及display属性
- 16颗GPU组成超级电脑 展示最强悍图形性能
- Zener Diode(雪崩二极管/齐纳二极管)
- 安装VS2008的注意事项
- 做红尘深处最安静的女子
- 交通类广告主钟情门户 食品饮料类广告流向视频