java HotSpot
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相关推荐
- Java HotSpot VM 命令行参数【官方版】
2019独角兽企业重金招聘Python工程师标准>>> Java HotSpot VM Command-Line Options Command-line options that ...
- 关于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 ...
- 启动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 ...
- 解决:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408,
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.只是想启动elasticsearch,报错如题: Java HotSpot(TM) 64-Bit ...
- JAVA:hotspot 虚拟机的server和client模式
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/magi1201/article/details/41597831 今天看java虚拟机的知识,发现s ...
- java HotSpot 内存管理白皮书
原文见:http://www.open-open.com/lib/view/open1381034220705.html.查阅资料后,对原文做了补充. 文中关于JVM的介绍基于JDK1.6的Hotsp ...
- Java HotSpot 虚拟机选项 -X -XX 的含义
1.JDK 7 及以前版本 官方文档对 -X.-XX的说明如下: Options that begin with -X are non-standard (not guaranteed to be s ...
- 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 ...
- 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 ...
- java hotspot 默认垃圾回收器_怎么查看服务器默认的垃圾的收集器是哪个?生产环境上如何配置垃圾回收收集器?谈谈你对垃圾收集器的理解?...
上篇:https://zhuanlan.zhihu.com/p/165998261zhuanlan.zhihu.com 一.查看默认的垃圾收集器 1.如何查看默认的垃圾收集器 (1)代码演示: pa ...
最新文章
- Python 无法安装PyAudio问题
- JS中的prototype
- Atitit java 二维码识别 图片识别
- Intel 酷睿i5 6300HQ与Intel 酷睿i7 6700HQ哪个好
- MySQL使用规范_心得总结
- 巨无霸Win8PE X64服务器维护专用,【13年4月4日】维护版win8pe【32位+64位+纯64位】(支持BIOS+EFI)...
- CentOS7 源码编译安装Redis shell脚本
- Scrapy 爬虫框架初体验二 —— 以一个新闻站点爬取为例
- js动态创建元素和删除
- 7月29日绝地求生服务器维护,绝地求生7月29日维护到几点 7.29吃鸡更新维护公告...
- 重置IBM刀片服务器的管理模块
- 大学一年级计算机科学与技术,计算机科学与技术系授课计划及课程表一年级.pdf...
- 设想无人值守的自动化测试方案
- UPC 2020年夏混合个人训练第八十一场
- PhotoShop CC2015(64位)下载链接和破解教程
- mysql索引命中查看_MySQL索引无法命中的几种情况及索引验证方法
- 化学绘图软件ChemDraw真的什么都能干!
- react实现汉堡_React动画切换(开关)按钮(汉堡菜单)组件
- java获取mac地址-屏蔽ip封mac地址
- oracle基础|oracle的认知|Select用法详解