Java虚拟机

JVM

  JVM即Java虚拟机,它是一个想象中的机器,通过它Java可以实现编译后的跨平台运行。

    

 

主要的JVM有

  • Oracle的HostSpot。(原来叫Sun HostSpot)
  • Oracle的JRockit。(原来叫Bea JRockit,本称为世界上最快的JVM)
  • Google的Dalvik。(Google android的虚拟机,特点编译后dex文件比jar小很多,编译器对字节码进行了很多优化,使其变得更小)

HotSpot虚拟机

  

HotSpot由一个字节码解析器两个JIT编译器组成。

  • 字节码解释器:用于解释执行。负责将字节码解释成机器码。
  • JIT编译器:用于编译执行。即时(动态)编译器,负责在运行的过程中动态的将一些热点(执行次数最多的方法)编译成本地机器码,并进行优化,保存起来,以便下次使用,从而提高运行效率。JIT编译器由客户端编译器和服务器端编译器组成。客户端编译器:是一种轻量级的编译器,编译时间更短,占用内存更少。服务器端编译器:是一种重量级的编译器,因进行大量的编译优化,所以编译时间更长,但执行效率更高。

HotSpot默认情况下是解释和编译混合执行的。如下mixed mode表示混合执行模式。

Java代码  
  1. C:\Documents and Settings\tengfei.fangtf>java -version  
  2. java version "1.6.0_16"  
  3. Java(TM) SE Runtime Environment (build 1.6.0_16-b01)  
  4. Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)  

 JIT的参数

  • complileThreshold=1000 调用多少次即为热点。
  • 代码内联的判断依据。
  • -XX:+CITime JIT编译消耗的时间。
  • -XX:+PrintCompilation 打印编译的方法。

 堆设置参数

 -Xmx1024m:设置JVM最大可用内存为1024M。memory max

 -Xms1024m:设置JVM初始内存为1024M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

你可能感兴趣的:(java,jvm,oracle,优化,虚拟机,编译器)