迅捷IT网
  • [深入JVM] 深入Java虚拟机:Class文件实例解析 日期:2012-03-12 01:34:52  点击:35   好评:0  评论(0)

    前面发了几篇学习笔记,但是看这些东西总是感觉很玄乎,来一篇实战的东西来揭一下JVM的面纱,让SSH时代的童鞋们来熟悉一下Java的老祖爷JVM。由于自己的水平有限,所以大家在看过程中发了什么问题,或者您有什么疑问请及时提出来,我及时解决。如果您有什么建...

  • [深入JVM] Java内存泄露监控工具:JVM监控工具介绍 日期:2012-03-12 01:34:34  点击:49   好评:0  评论(0)

    jstack -- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到 当时运行的java程序的ja...

  • [深入JVM] jstack命令(Java Stack Trace) 日期:2012-03-12 01:34:23  点击:27   好评:0  评论(0)

    1、介绍 jstack用于打印出给定的java进程ID或corefile或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项-J-d64,Windows的jstack使用方式只支持以下的这种方式: jstack [-l] pid 如果java程序崩溃生成core文件,jstack工具可以用来获得core...

  • [深入JVM] jmap命令(Java Memory Map) 日期:2012-03-12 01:34:15  点击:47   好评:0  评论(0)

    1、介绍 打印出某个java进程(使用pid)内存内的,所有对象的情况(如:产生那些对象,及其数量)。 可以输出所有内存中对象的工具,甚至可以将VM中的heap,以二进制输出成文本。使用方法jmap-histopid。如果连用SHELLjmap-histopida.log可以将其保存到文本...

  • [深入JVM] Java开源工具在linux上的源码分析(六):符号表的读取 日期:2012-03-12 01:34:06  点击:36   好评:0  评论(0)

    通常我们使用jmap,jstack 去检查堆栈信息的时候,是不会使用-f参数的,但有的时候系统在无法打印出堆栈信息的时候,会建议你使用参数-F。 关于-F参数与非-F参数的区别笔者已经在前面的博客中讲述(http://blog.csdn.net/raintungli/article/details/7023092...

  • [深入JVM] Java开源工具在linux上的源码分析(五):-F参数的bug 日期:2012-03-12 01:33:57  点击:46   好评:0  评论(0)

    当使用jmap,jstack是用-F参数的时候,是通过调用系统调用ptrace来取的寄存器的信息,关于linux下的ptrace实现可以参考我的博客(http://blog.csdn.net/raintungli/article/details/6563867) 在jdk6u23版本之前你会发现,当你使用jstack -F的时候 经常在logg...

  • [深入JVM] Java开源工具在linux上的源码分析(四):safe point 日期:2012-03-12 01:33:47  点击:22   好评:0  评论(0)

    safe point 顾明思意,就是安全点,当需要jvm做一些操作的时候,需要把当前正在运行的线程进入一个安全点的状态(也可以说停止状态),这样才能做一些安全的操作,比如线程的dump,堆栈的信息。 在jvm里面通常vm_thread(我们一直在谈论的做一些属于vm 份内...

  • [深入JVM] Java开源工具在linux上的源码分析(三):执行的线程 日期:2012-03-12 01:33:37  点击:28   好评:0  评论(0)

    在前面的博客中(http://blog.csdn.net/raintungli/article/details/7034005)所提到的信号转发线程,Attach Listener 线程都只是操作socket文件,并没有去执行比如stack 分析,或者heap的分析,真正的工作线程其实是vm thread. (一)启动vm thread jintThr...

  • [深入JVM] Java开源工具在linux上的源码分析(二):信号处理 日期:2012-03-12 01:33:27  点击:43   好评:0  评论(0)

    当java虚拟机启动的时候,会启动很多内部的线程,这些线程主要在thread.cpp里的create_vm方法体里实现。 而在thread.cpp里主要起了2个线程来处理信号相关的: JvmtiExport::enter_live_phase(); //SignalDispatcherneedstobestartedbeforeVMIniteventisposte...

  • [深入JVM] Java开源工具在linux上的源码分析(一):跟踪方式 日期:2012-03-12 01:33:16  点击:30   好评:0  评论(0)

    在我们常用的Jstack, Jmap 用于分析java虚拟机的状态的工具,通过起另一个虚拟机通过运行sun.tools包下的java文件,去跟踪另一个虚拟机的状态。 如果让你设计一个跟踪另一个进程的方法,你也通常会考虑这几种常用的方式。 第一种,就是通知被跟踪的进程,让...