【叶凡网络】Java开源工具在linux上的跟踪方式
- 2014-02-13 10:24:58 | 新闻来源:叶凡网络 | 点击量:551
linux中可以选择多种方式进行进程中通讯 共享内存,既然是需要向被跟踪进程发出命令。文件之类,其中创立socket文件实现通讯是比较简单的方法。通过起另一个虚拟机通过运行sun.tool包下的java文件,去跟踪另一个虚拟机的状态。常用的Jstack,Jmap用于分析java虚拟机的状态的工具。
也通常会考虑这几种常用的方式。如果让你设计一个跟踪另一个进程的方法。就是通知被跟踪的进程,第一种。让进程执行相应的消息,同时对该消息做出反应。就是通过内核的调用,第二种。直接能够访问进程的内存,堆栈情况,通过分析被跟踪的进程的内存结构,从而知道当前被跟踪的进程的状态。
优势:访问被跟踪的内存,通过内核的支持。并作出快照,后台分析,很少影响被跟踪的进程。
缺点:无法解耦,这种方式需要对被跟踪程的内存分配和使用非常的解。而自身系统内核调用也会出问题
优势:调用者无需知道被调用者的逻辑,对调
用者和被调用者只要达成简单的通讯协议。结构,只需要简单的发送命令的方式,被调用者能够接受到命令,并且对该命令进行回应就可以。
缺点:
或者繁忙,如果被调用者当时的状态原本就不正常。没方法对该命令做出响应,那这个跟踪进程往往是规定的等待时间里,无法返回正确的需要的信息。其次被调用者在分析的过程中,有可能需要暂停进程中的其他线程,而对被跟踪的进程有一定的影响。
工具中会先选择第一种方式,Java工具类中也是大致实现了这2中方式。如果发现第一种方式不能胜利,将会建议使用-F参数,也就是第二种方式。
上一篇:【叶凡网络】英格兰民众抱怨政府治灾不力遇史上最强降雨
下一篇:【叶凡网络】四川政商界牵涉不同案件持续“地震” 超20人