首页 > 其他分享 >JVM 虚拟机笔记,不一定全,但是一定靠谱

JVM 虚拟机笔记,不一定全,但是一定靠谱

时间:2023-06-21 13:12:31浏览次数:42  
标签:Java Sun 虚拟机 VM HotSpot 笔记 JVM JRockit

  在学习JVM之前,先分享一则信息:2009 年4月20日,Orace 宣布正式以74 亿美元的价格收购市值曾超过2000 亿美元的Sun公司,传奇的Sun Microsystems 从此落幕成为历史。

一、Java虚拟机的介绍

  首先登场的是,虚拟机的始组:Sun Classic / Exact VM,Sun Classic 被誉为世界上第一款商用Java虚拟机,只能使用纯解释器方式来执行,如果想要使用即时编译器则必须进行外挂,但是如果使用了外挂,那么解释器就不能工作了。

  所以,这个时候的Java语言很慢的印象,就在用户心中树立起来了。

  接下来,上场的是英雄气短的Exact VM,成名之作在于准确式内存管理,简单来说,就是虚拟机知道内存中某一个位置的数据具体是什么类型的。

  随之而来的是,武林盟主:HotSpot VM,是目前使用范围最广的Java虚拟机。就是这么一款吊炸天的虚拟机,是由一家小公司开发的。于是,在1997年,Sun公司,收购了Longview Technologies公司,从而获得了HotSpot虚拟机。名称中的HotSpot指的是:热点代码探测能力。可以通过执行计数器来找出最具有编译价值的代码,之后通知即时编译器以方法为单位进行编译。

  总的来说,只有编译器和解释器恰如其分的协同工作,可以在最优化的程序中,响应时间与最佳执行性能中取得平衡,而且无须等待本地代码的输出才能执行程序。

  江湖之间,并不只有打打杀杀,还有小家碧玉的虚拟机Mobile / Embedded VM,在嵌入式设备上,ME VM不仅面临外部忧患,而且还面临这自家SE Embedded的竞争和侵蚀。当然了,既然有武林盟主,当然还有长老、大师之类的角色。天下第二的BEA JRockit / IBM J9 VM 在历史上也存在着一定的地位。BEA公司的JRockit 可是号称“世界上速度最快的Java虚拟机”,BEA 将自家的JRockit虚拟机着重发展成为专门为服务器硬件和服务端应用场景高度优化的虚拟机,JRockit 内部不包含解释器的实现,全部代码都靠着即时编译器编译后执行。JRockit 的垃圾收集器也是处于Java虚拟机的领先水平。但是,随着BEA 公司被Oracle公司收购,版本永远停留在了R28。

  IBM J9虚拟机的定位,跟HotSpot差不多,在设计上全面考虑服务端、桌面应用,再到嵌入式的多用途虚拟机,J9的职责分离与模块化做的比HotSpot更加的优秀。

  当然了,除了平常运行的商业虚拟机,还有一些软硬件相结合工作的专有虚拟机,往往能够实现更高的执行性能,比如Liquid VM,它直接越过通用的操作系统去直接控制硬件,不需要进行内核态/用户态的切换,可以最大限度地发挥硬件的能力。Azul VM虚拟机提供了巨大内存范围内停顿时间可以控制的垃圾收集器(PGC和C4收集器),但是这个虚拟机是Azul公司在HotSpot虚拟机的基础上,进行大量改进得来的。Azul公司发布了自己的Zing虚拟机,Zing虚拟机的好处实在是太多了,可以让普通用户无须了解垃圾收集等底层调优,享有低延迟、快速预热、易于监控的功能。这可是Zing虚拟机的核心价值与卖点。

  有擂主就肯定有挑战者的存在,这里的挑战者是来自Apache的Harmony与Google  公司的Android Dalvik 虚拟机,但是这两个虚拟机不能被称为Java虚拟机。在虚拟机的海洋中,不仅仅只有商用虚拟机,还有一些设计之初就仅仅抱着研究、验证某种技术和观点。比如:KVM、Java Card VM、Squawk VM、JavaInJava、Maxine VM、Jikes RVM、IKVM.NET等等。   

标签:Java,Sun,虚拟机,VM,HotSpot,笔记,JVM,JRockit
From: https://www.cnblogs.com/kuangmeng/p/17492279.html

相关文章

  • 渗透笔记:vulnhub靶机drippingblues--第一篇测试记录
    在不知道靶场的ip情况下进行扫描 出现有几个ip,但是不知道哪个是的,所以就一个个试一试namp-T4-sV-A-O-p- 192.168.13.143-T4(速度) -sV(版本扫描和开启的服务) -O(操作系统) -p-(所有端口)扫了好几个,只有一个是的,所以不是的就没有发出来了 ftp一下ip,发现有一......
  • buuctf刷题笔记
    换表的base64解密importbase64importstringstr1="x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q"string1="ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/"string2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl......
  • 线性代数笔记 #2 | 向量空间相关
    所用教材:席南华基础代数(第一卷)柯斯特利金代数学引论练习模块:https://www.cnblogs.com/IhopeIdieyoung/p/17495666.html线性相关(lineardependence):我们定义\(\mathbb{R}^n\)中的向量(组)\(v_1,v_2,\cdotsv_k\)是线性相关的,当且仅当存在不全为0的数(纯量)\(a_1,......
  • <学习笔记>组合数学
    ####插板法问题一:现有$n$个完全相同的元素,要求将其分为$k$组a,保证每组至少有一个元素,一共有多少种分法?考虑拿$k-1$块板子插入到$n$个元素两两形成的$n-1$个空里面。所以答案就是$$\binom{n-1}{k-1}$$问题二:如果问题变化一下,每组允许为空呢?显然此时没法直接插板......
  • SpringBoot学习笔记
    SpringBoot学习笔记学习资料分享,一定要点!!!示例代码跳转链接无效,查看完整笔记点击:https://gitee.com/pingWurth/study-notes/blob/master/springboot/spring-boot-demo/SpringBoot学习笔记.md官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/index......
  • 复习笔记-Unity
    泛型与Object区别Object是所有类型的基类,泛型是一种数据类型,将类型参数化达到代码复用提高软件开发效率泛型不用装箱拆箱,泛型是替换,将泛型参数替换成具体的类型,并且不需要强制类型转换,并且编译时自动检查类型安全,避免隐性的类型转换异常。Toggle与Button监听事件:Toggle:On......
  • Docker --镜像容器学习笔记
    Docker简介准备工作1.前提知识-linux-Git2.课程定位和范围(基于JavaEE方向)-JavaEEjavaSpringMVC/springBoot/mybatis...docker基础篇-DockerGoSwarm/compose/machine/mesos/k8s/---CI/CDjenkinds整合docker高级篇是什么1.问题:为什......
  • 【whale-starry-stl】01天 list学习笔记
    一、知识点1.std::bidirectional_iterator_tagstd::bidirectional_iterator_tag是C++标准库中定义的一个迭代器类型标签,用于标识支持双向遍历的迭代器类型。在C++中,迭代器是一种泛型指针,用于遍历容器中的元素。迭代器类型标签用于标识迭代器的特性,从而在算法中选择合适的......
  • 【React工作记录一百一十六】前端小知识点扫盲笔记记录14
    前言我是歌谣放弃很容易但是坚持一定很酷微信公众号关注前端小歌谣带你进入前端巅峰交流群今天继续对前端知识的小结根据每个元素i属性进行排序<!DOCTYPEhtml><htmllang="en"> <head> <metacharset="UTF-8"/> <metahttp-equiv="X-UA-Compatible"content="IE=edge&......
  • 强制关闭kvm虚拟机
    删掉之后,将处于暂停的KVM先停掉:virshdestroymaster--强制关闭KVM关闭之后,将kvm重新启动一下:virshstartmaster--开启KVM于是发现我的KVM又活回来了,哈哈哈!......