易截截图软件、单文件、免安装、纯绿色、仅160KB

[Java性能剖析]JVM Management API


      
JVM本身提供了一组管理的API,通过该API,我们可以获取得到JVM内部主要运行信息,包括内存各代的数据、JVM当前所有线程及其栈相关信息等
等。各种JDK自带的剖析工具,包括jps、jstack、jinfo、jstat、jmap、jconsole等,都是基于此API开发的。本篇对这部
分内容进行一个详细的说明。
       参考:http://java.sun.com/javase/6/docs/api/java/lang/management/package-summary.html
一、Management API
       我们先看一下从Sun JVM我们可以获取到哪些信息,如下图(来自于JConsole的MBean部分的截图):
      
      1.HotSpotDiagnostic:非标准的监控JMX,这块是Sun JVM自带的,主要提供了两个功能
修改JVM的启动参数(譬如在不需要重启的情况下设置-XX:+HeapDumpOnOutOfMemoryError参数使得JVM内存不足的时候自动dump出堆空间到文件提供后续分析)
Dump堆信息到文件,可以猜测jmap工具是基于此功能来完成的
     我们通过com.sun.management.HotSpotDiagnosticMXBean定义了解其主要功能
Java代码 < type="application/x-shockwave-flash" width="14" height="15" src="http://ayufox.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" src="http://ayufox.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=public%20interface%20HotSpotDiagnosticMXBean%0A%7B%0A%20%20%20%20void%20dumpHeap(String%20s%2C%20boolean%20flag)%20throws%20IOException%3B%0A%20%20%20%20List%20getDiagnosticOptions()%3B%0A%20%20%20%20VMOption%20getVMOption(String%20s)%3B%0A%20%20%20%20void%20setVMOption(String%20s%2C%20String%20s1)%3B%0A%7D" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14">
public
 
interface
 HotSpotDiagnosticMXBean  
{  
    void
 dumpHeap(String s, 
boolean
 flag) 
throws
 IOException;  
    List get


相关文档:

Java语言中的关键字讲解(三)volatile的用途

关于volatile
我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。
这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下
volatile关键字的使用变得非常重 ......

Java中类的生命周期

  Java虚拟机管理类和对象的生命周期;
(1)类的生命周期从类被加载,连接,初始化开始,到类被卸载结束;
(2)类处于生命周期时,它的二进制数据位于运行时方法区内,在堆区还有一个相应的描述类的Class类的对象;
(3)只有当类处于生命周期中时,Java程序才能够使用它。
1.Java虚拟机及程序的生命周期
(1) ......

【奋斗第二天】菜鸟学Java之我的面向对象观续

昨天写了用面向对象的思想去分析一个实际的问题,呵呵,那么今天就就类和对象做一个详细的讨论。
昨天说了在CS中人物可能是一个抽象类或一个接口,而各种各样的人物就是继承或实现了这个接口,而说到这里我们还在讨论类,还没有涉及到对象,那么什么时候产生的对象呢?那是咱登陆了CS后选择了一个人物,然后再我们选好的同 ......

Java类的初始化顺序

Java类的初始化顺序
  我把Java类的初始化顺序分为两部分。第一部分是类的初始化,第二部分是对象的初始化。
  在初始化之前JVM必须先把该类的字节码加载到内存中来。这时不管创不创建对象都会马上执行类的初始化:
  执行静态初始化表达式(如static int a = 10)和静态初始化块(即static{}中的内容),注意两 ......

Java中对象的生命周期

  (1) 对象生命周期的开始
             对象生命周期开始时,需要为对象分配内存,并且初始化它的实例变量;
           对象生命周期结束
        & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号