浅谈如何理解Java虚拟机

    网上关于虚拟机的解释固然是不少的,但是纵观这些言谈仿佛是一个门外汉般:“嗯,是的!有道理。”但是读过之后便又没有其他什么感觉了。我也是浅谈一下对于他的一个理解。

1、什么是Java虚拟机

    百度百科上是这样解释的:

        虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。虚拟系统和传统的虚拟机Parallels DesktopVmwareVirtualBoxVirtual pc)不同在于:虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动windows系统那样耗费时间,运行程序更加方便快捷;虚拟系统只能模拟和现有操作系统相同的环境,而虚拟机则可以模拟出其他种类的操作系统;而且虚拟机需要模拟底层的硬件指令,所以在应用程序运行速度上比虚拟系统慢得多。

        也就是说,虚拟机只需要执行目标字解码文件而不需要考虑平台的特殊性。这固然是虚拟机所存在的价值和意义使得程序具有跨平台性,但是这也仅仅是对虚拟机特性的一种描述而已远远是谈不上原理性的理解的。    

2、从程序执行上看

    大家先启动自己的虚拟机,然后执行自己所写好的.class文件你会发现文件不是直接加载到CPU上执行的。而是托管到了JVM上,JVM再加载程序执行所必须的类文件从而将.class文件进行解码,然后将解码好的文件交由CPU去执行。由此而言,所谓的Java程序的执行实则只是Java虚拟机的一个进程而已。我们的操作也只是对于这样一个进程的操作。

    每一种语言都有其所存在的规则及其存在的意义。正所谓,“存在即合理”所以我们对于一种语言、一种事物的认知便要从其合理出发去理解他。从多个角度去发现他们之间的关联关系,包容性的去理解。

3、如何执行呢

    程序在JVM中的一个整体执行流程由类加载器、执行引擎子系统、垃圾回收子系统三部分来完成。而这三部分都是根据程序的需要来自动进行执行的。其中又会涉及到JVM内部的一些规则触发机制以及算法机制,当然还有执行过程中的线程分发,文件状态的改变(年轻态、老年态等)程序的算法扫描机制。

    大体上也就是指:文件被相关的类加载器加载,然后执行其文件,执行后根据需求释放其空间。这样的一个流程。

总结:对于JVM而言也仅仅是一个浅薄的认知,包括其中的加载、执行、释放等机制还有期中的算法机制等都还需要进一步的去探讨。在这一块不妨看一下《深入理解Java虚拟机》、《Java虚拟机规范》等书籍还是有很大帮助的,也希望你能够从中有所收获。     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值