1.HotSpot简介:

  sun公司从jdk1.3.1开始使用HotSpot虚拟机,主要使用c++实现的,它是较新的Java虚拟机,可以大大提高运行性能。java原先是把源代码编译为字节码在虚拟机上运行(JIT),这样执行速度较慢。而HotSpot讲部分常用的代码编译为本地代码,这样显著提高了性能。

  HotSpot包括一个解释器和两个编译器(client和server,二选一),解释和编译混合执行,默认启动解释执行。

  编译器:Java源代码被编译器编译为class文件,Java字节码在运行时可以被动态编译(JIT)成本地代码(前提是解释与编译混合执行且虚拟机不是刚启动时)

  解释器:解释器用来解释class文件。

  server启动慢,占用内存多,执行效率高,适用于服务器端应用

  client启动快,占用内存小,执行效率没有server高,默认情况下不进行动态编译,适用于桌面应用程序

  client默认关闭,server默认开启

2.动态编译:

  HotSpot在程序运行过程中编译。

  Java字节码是以解释的方式被加载到虚拟机中,程序运行过程中,对程序运行效率影响大的代码被称为热点(hotspot),HotSpot会把这些热点动态的编译成机器码,同时对机器码进行优化,对那些较少运行的代码,HotSpot就不会把他们编译。

  HotSpot对字节码有三层处理:不编译、编译、编译并优化---->由监视器决定

转载于:https://www.cnblogs.com/Life-is-Demo/p/11382041.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐