0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java虚拟机发展史:深入理解Java虚拟机

如意 来源:百家号 作者:怡子科技 2020-07-01 11:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Java虚拟机发展史

从1996年初sun公司发布的jdk1.0中所包含的sun Classic VM到今天,曾经涌现或消失过许多经典和特色的虚拟机出现。Classic VM只能使用纯编辑器来执行。如果要使用jit编辑器必须使用外挂。执行效率和传统的c/c++程序有很大差异,“Java语言很慢”就是在这个时候在用户中树立起来的。

Sun公司努力去解决classvm的问题,为了提升运行效率,在jdk1.2使用了exact vm 它的执行系统已经具备现代高性能虚拟机的雏形。编译器和解释器混合工作模式。虽然比第一代先进了许多,但在商业中只存在了很短暂的时间就被hotspot vm所取代,甚至还没来的及发布windows和linx下的商用版本。

提起hotspotvm。它是sun jdk 和open jdk中所带的虚拟机,也是目前使用范围最广的Java虚拟机。继承了上两代虚拟机的优点。

热点代码和探测技术,hotSpot热点探测能力可以通过执行计数器找出最具有编译价值的代码,然后通过jit以方法为单位进行编译。

Java技术的未来是趋向于模块化的,技术平台越来越复杂,越来越庞大。当单一的Java开发无法满足当前软件的复杂需求,越来越多的Java虚拟机的语言开发被应用到我们的软件项目中。

如今,cpu硬件的发展方向已经从高频率转化为多核心,软件开发越来越关注并行编程的领域。Jdk1.5 引入了Java.util.concurrent包实现了粗粒度的并发框架。而1.7的forkjoin包则包含了对这个框架的一次重要扩充。Jdk1.8提供lambda 极大的改善了Java语言不适合函数式编程的现状。在几年之前,主流的cpu就支持64位架构了。,Java也早早地推出了支持64位的版本。

想要精通jdk内部的实现机制,最便捷的路径是自己编译一套jdk,虽然门槛高很多,但肯定比阅读书籍,文章更贴近本质,怎么获取jdk源码?Source bundle releases 获取打包好的源码。大概99M,解压后约 339M。

Java虚拟机在执行Java程序的过程中,会把它所管理的内存划分为若干个不同的数据区。这些区域有各自的用途,有的区域随着随着虚拟机进程的启动而存在。有些区域则依赖于用户线程的启动和结束建立和销毁。

程序计数器是一块较小的内存空间,它可以看作当前线程执行字节码的行数指示器。每条线程都需要一个独立的程序计数器。线程之间计数器互不影响。如果线程正在执行一个方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址:如果正在执行native方法。这个计数器值则为空,此内存区域是唯一一个虚拟机没有任何outofmemoryError的区域。

Java虚拟机栈也是线程私有的,虚拟机栈是Java方法执行的内存模型,存储局部变量表,操作数栈,方法出口,动态链接等信息。如果线程请求的栈深度大于虚拟机所允许的深度,抛出stackOverFlowError。本地方法栈为虚拟机使用native方法使用。

Java堆是管理内存中最大的一块,是所有线程共享,存放对象实例。有的时候也被成为GC堆,采用分代收集算法,分为新生代和老生代 如果堆无法继续扩展并且实例无法内存分配。抛出outofmemoryError。方法区和堆一样,各个线程共享的内存区域。存储类信息,常量,静态变量,即时编译器编译后的代码等数据。运行时常量池是方法区的一部分。直接内存并不是虚拟机运行的一部分,也不是Java规范的内存区域,在jdk1.4加入nio,引入基于通道的缓冲区的I/o方式,它可以使用native函数库直接分配堆外内存,这样显著提高性能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    20

    文章

    3006

    浏览量

    116830
  • 虚拟机
    +关注

    关注

    1

    文章

    975

    浏览量

    30694
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    虚拟化数据恢复】ESXI虚拟机还原快照致数据丢失?完整恢复方案解析

    虚拟机技术作为虚拟化技术的一种,在现代信息技术领域扮演着重要角色。虚拟化技术的核心是将事物从一种形式转变为另一种形式,它在多个方面都有广泛应用。 常见的虚拟化技术,比如操作系统中
    的头像 发表于 03-12 15:17 208次阅读
    【<b class='flag-5'>虚拟</b>化数据恢复】ESXI<b class='flag-5'>虚拟机</b>还原快照致数据丢失?完整恢复方案解析

    企业级KVM虚拟化平台搭建实战

    的出现彻底改变了这一局面,通过在单台物理机上运行多个虚拟机,将资源利用率提升至60%以上,同时实现了分钟级的虚拟机创建和弹性伸缩。
    的头像 发表于 03-11 09:38 704次阅读

    【米尔全志T153开发板评测】虚拟机资料下载与安装

    【前言】 米尔全志开发板在资料中提供了虚拟机的环境,这使得开发容易,这里讲一下,下载好虚拟机包报进行较验的经验。 【缘由】 在米尔开发者中心下载到Tools后,解压,在解压时提示头部有问题,因此需要
    发表于 03-10 12:29

    虚拟机数据恢复—虚拟机vmdk文件被删除的数据恢复案例

    本次数据恢复涉及一台R710系列服务器和一台MD3200系列存储,上层是ESXI5.5版本的虚拟机虚拟文件。因客户机房非正常断电,虚拟机无法启动。机房管理员检查发现虚拟机配置文件丢失
    的头像 发表于 02-10 17:05 498次阅读
    <b class='flag-5'>虚拟机</b>数据恢复—<b class='flag-5'>虚拟机</b>vmdk文件被删除的数据恢复案例

    服务器数据恢复—EqualLogic存储硬盘离线导致上层虚拟机不可用的数据恢复案例

    某公司IT部门一台EqualLogic 6100存储设备突然崩溃。 经过初步检查发现服务器存储崩溃的原因是该存储一组阵列上的2块硬盘出现故障离线,上层虚拟机不可用、存储崩溃。该存储设备已经过保,无法申请售后(即使没有过保,存储设备厂商的售后也只为硬件提供质保,对存储设备中的数据安全负责)。
    的头像 发表于 01-20 14:52 181次阅读
    服务器数据恢复—EqualLogic存储硬盘离线导致上层<b class='flag-5'>虚拟机</b>不可用的数据恢复案例

    Arm架构助力Azure Cobalt 100虚拟机工作负载性能提升

    自从微软推出基于 Arm 架构的 Azure Cobalt 100 虚拟机 (VM) 以来,已有众多客户选择这款新实例运行各类用例。目前,Cobalt 100 虚拟机已在全球微软 Azure 云
    的头像 发表于 12-15 14:42 800次阅读
    Arm架构助力Azure Cobalt 100<b class='flag-5'>虚拟机</b>工作负载性能提升

    虚拟机数据恢复—异常断电致ESXI存储失联?这份实战数据恢复案例请收好

    服务器存储数据恢复环境: 一台服务器上部署esxi虚拟化平台。上层采用通过FreeNAS构建的iSCSI方式FCSAN功能,FreeNAS层采用UFS2文件系统。 esxi虚拟化系统有3台虚拟机
    的头像 发表于 11-11 14:11 399次阅读

    Arm Neoverse CPU上大代码量Java应用的性能测试

    Java 虚拟机 (JVM) 内执行。JVM 必须先通过解释器或即时 (JIT) 编译器将字节码转换为机器码,而运行时生成的机器码对 Java 应用的效率和性能至关重要。
    的头像 发表于 11-05 11:25 936次阅读
    Arm Neoverse CPU上大代码量<b class='flag-5'>Java</b>应用的性能测试

    蜂鸟e203在虚拟机unbuntu上面验证时报错的可能原因及解决措施

    内容:蜂鸟e203在虚拟机unbuntu上面验证时报错的可能原因 现象: 解决措施: 蜂鸟e203在虚拟机unbuntu上面验证时不要重复输入命令: make install make compile SIM=iverilog 只需输入一遍
    发表于 10-24 08:27

    搭建自己的ubuntu系统之创建ubuntu虚拟机

    打开VMware软件,点击创建新的虚拟机。进入以下界面:选择自定义,点击“下一步”。选择对应VMware版本的兼容性,版本可在帮助-&gt;关于VMware Workstation中
    发表于 09-25 09:39

    中软国际鸿云虚拟机安装指南

    鸿蒙电脑作为新一代分布式计算平台,凭借其卓越的多端协同能力和智能化特性,为高效办公提供了新选择。针对专业软件兼容性这一核心痛点,中软国际的鸿云虚拟机解决方案提供了务实的技术路径。作为专为鸿蒙生态打造
    的头像 发表于 06-23 16:31 5379次阅读

    迅为RK3588开发板挂载Windows以及虚拟机Ubuntu测试

    使用以下命令测试,如下图所示: 电脑端 IP 为 192.168.1.96 共享文件夹为 share-tian 虚拟机 Ubuntu 端 IP 为 192.168.1.6 共享文件夹为 samba
    发表于 06-19 10:32

    TECS OpenStack资源池虚拟机网络二层地址无法互通的问题处理

    某运营商TECS OpenStack使用主机overlay SDN方案组网,运维人员在创建虚拟机测试虚拟机网络状态时发现问题:在其中一台主机上创建两台同网段虚拟机虚拟机之间二层地址无
    的头像 发表于 06-12 09:28 1021次阅读
    TECS OpenStack资源池<b class='flag-5'>虚拟机</b>网络二层地址无法互通的问题处理

    虚拟化数据恢复—XenServer虚拟化平台上VPS不可用的数据恢复案例

    虚拟化环境: 某品牌720服务器中有一组通过型号为H710P的RAID卡+4块STAT硬盘组建的RAID10,上层部署Xen Server服务器虚拟化平台。虚拟机安装的Windows Server
    的头像 发表于 05-30 11:35 807次阅读
    <b class='flag-5'>虚拟</b>化数据恢复—XenServer<b class='flag-5'>虚拟</b>化平台上VPS不可用的数据恢复案例

    Vsan数据恢复——Vsan分布式文件系统上虚拟机不可用的数据恢复

    一台采用VsSAN分布式文件系统的存储设备由于未知原因关机重启。管理员发现上层的虚拟机不可用,存储内的数据丢失。
    的头像 发表于 05-15 17:42 692次阅读
    Vsan数据恢复——Vsan分布式文件系统上<b class='flag-5'>虚拟机</b>不可用的数据恢复