1. HotSpot历史

SUN的JDK版本从1.3.1开始运用HotSpot虚拟机, 2006年底开源,主要使用C++实现,JNI接口部分用C实现。
HotSpot是较新的Java虚拟机,用来代替JIT(Just in Time),可以大大提高Java运行的性能。
Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢。而HotSpot将常用的部分代码编译为本地(原生,native)代码,这样显着提高了性能。
HotSpot JVM 参数可以分为规则参数(standard options)和非规则参数(non-standard options)。
规则参数相对稳定,在JDK未来的版本里不会有太大的改动。

非规则参数则有因升级JDK而改动的可能。

2.HotSpot基础知识

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

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

解释器: 解释器用来解释class文件(字节码),java是解释语言(书上这么说的)。

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

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

由-XX:+RewriteFrequentPairs参数控制 client模式默认关闭,server模式默认开启

在jre安装目录下的lib/i386/jvm.cfg 文件下。

3.动态编译

动态编译(compile during run-time),英文称Dynamic compilation;Just In Time也是这个意思。

HotSpot对bytecode的编译不是在程序运行前编译的,而是在程序运行过程中编译的。
HotSpot里运行着一个监视器(Profile Monitor),用来监视程序的运行状况。

java字节码(class文件)是以解释的方式被加载到虚拟机中(默认启动时解释执行)。 程序运行过程中,那一部分运用频率大,那些对程序的性能影响重要。对程序运行效率影响大的代码,称为热点(hotspot),HotSpot会把这些热点动态地编译成机器码(native code),同时对机器码进行优化,从而提高运行效率。对那些较少运行的代码,HotSpot就不会把他们编译。

HotSpot对字节码有三层处理:不编译(字节码加载到虚拟机中时的状态。也就是当虚拟机执行的时候再编译),编译(把字节码编译成本地代码。虚拟机执行的时候已经编译好了,不要再编译了),编译并优化(不但把字节码编译成本地代码,而且还进行了优化)。

至于那些程序那些不编译,那些编译,那些优化,则是由监视器(Profile Monitor)决定。

最后欢迎大家访问我的个人网站:1024s

java HotSpot相关推荐

  1. Java HotSpot VM 命令行参数【官方版】

    2019独角兽企业重金招聘Python工程师标准>>> Java HotSpot VM Command-Line Options Command-line options that ...

  2. 关于Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file: 11043的解决办...

    Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file: /tmp/hsperfdat ...

  3. 启动Kafka失败Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 107

    报错信息: Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000,  107374 ...

  4. 解决:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408,

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.只是想启动elasticsearch,报错如题: Java HotSpot(TM) 64-Bit ...

  5. JAVA:hotspot 虚拟机的server和client模式

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/magi1201/article/details/41597831 今天看java虚拟机的知识,发现s ...

  6. java HotSpot 内存管理白皮书

    原文见:http://www.open-open.com/lib/view/open1381034220705.html.查阅资料后,对原文做了补充. 文中关于JVM的介绍基于JDK1.6的Hotsp ...

  7. Java HotSpot 虚拟机选项 -X -XX 的含义

    1.JDK 7 及以前版本 官方文档对 -X.-XX的说明如下: Options that begin with -X are non-standard (not guaranteed to be s ...

  8. Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in

    使用jdk8的时候,出现了Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support wa ...

  9. Java HotSpot(TM) 64-Bit Server VM warning:Options -Xverify:none and -noverify were deprecated in ..

    刚刚用IDEA学习springBoot. 运行程序时,出现了这种情况 Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none ...

  10. java hotspot 默认垃圾回收器_怎么查看服务器默认的垃圾的收集器是哪个?生产环境上如何配置垃圾回收收集器?谈谈你对垃圾收集器的理解?...

    上篇:https://zhuanlan.zhihu.com/p/165998261​zhuanlan.zhihu.com 一.查看默认的垃圾收集器 1.如何查看默认的垃圾收集器 (1)代码演示: pa ...

最新文章

  1. Python 无法安装PyAudio问题
  2. JS中的prototype
  3. Atitit java 二维码识别 图片识别
  4. Intel 酷睿i5 6300HQ与Intel 酷睿i7 6700HQ哪个好
  5. MySQL使用规范_心得总结
  6. 巨无霸Win8PE X64服务器维护专用,【13年4月4日】维护版win8pe【32位+64位+纯64位】(支持BIOS+EFI)...
  7. CentOS7 源码编译安装Redis shell脚本
  8. Scrapy 爬虫框架初体验二 —— 以一个新闻站点爬取为例
  9. js动态创建元素和删除
  10. 7月29日绝地求生服务器维护,绝地求生7月29日维护到几点 7.29吃鸡更新维护公告...
  11. 重置IBM刀片服务器的管理模块
  12. 大学一年级计算机科学与技术,计算机科学与技术系授课计划及课程表一年级.pdf...
  13. 设想无人值守的自动化测试方案
  14. UPC 2020年夏混合个人训练第八十一场
  15. PhotoShop CC2015(64位)下载链接和破解教程
  16. mysql索引命中查看_MySQL索引无法命中的几种情况及索引验证方法
  17. 化学绘图软件ChemDraw真的什么都能干!
  18. react实现汉堡_React动画切换(开关)按钮(汉堡菜单)组件
  19. java获取mac地址-屏蔽ip封mac地址
  20. oracle基础|oracle的认知|Select用法详解

热门文章

  1. python中if判断语句、while循环语句、for循环遍历、break 和continue作用
  2. Reset your Rearm count, run Windows 7 Forever without cracks
  3. Android快速选字,哪款打字最快捷方便?Android输入法合辑
  4. RPA之家SAP视频教程
  5. linux下 udf提权_udf提权
  6. 关于css碎知识点(2)
  7. DOS下NFO文件的查看方法!
  8. JavaEE5_Request
  9. C语言人五英尺七英寸,5呎7吋 是多高?
  10. Debian双网卡设置