美文网首页java虚拟机
Java虚拟机的几个什么:是什么,为什么使用,作用,原理,实战分

Java虚拟机的几个什么:是什么,为什么使用,作用,原理,实战分

作者: 七夏L别回忆 | 来源:发表于2018-08-10 11:00 被阅读0次

    参考:www.cnblogs.com/zhanglei93/p/6590609.html

    1.java虚拟机是什么

        虚拟机分为:    硬件模拟软件(VMwar)和  介于硬件和编译程序之间的软件,在实际计算机上通过软件模拟来实现(java虚拟机)

        Java虚拟机:有自己想象中的硬件,如处理器、堆栈、寄存器等,有相应的指令系统。

    2.为什么要使用java虚拟机:   Java虚拟机帮助java语言实现与平台无关性。

            平台无关性的原因(可移植)(JVM):

             a. Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java语言在不同平台上运行时不需要重新编译

              b.java对数据类型的内部格式的严格规定,使java虚拟机的实现对数据的解释是相同的

    3.JVM的作用:     解释运行字节码程序(指令),且消除平台差异性

           JAVA虚拟机的加载模式是一种委派模式(图3:类加载层次图);下层的加载器能够看到上层加载器中的类,反之则不行。类加载器可以加载类但是不能卸载类

    运行时数据区  :

    Java堆:   

            特点: 线程共享,虚拟机管理内存最大的部分

           目的: 存放实例对象,垃圾收集器管理的主要区域(分代法)

            分类: 老年代   新生代

            设置大小: 过-Xmx和-Xms参数来扩展

    方法区:   

               特点:线程共享,可以不实现垃圾收集,并非数据永久存在

              目的:存储被Java虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

    虚拟机栈:

               特点:线程私有 ,  生命周期与线程相同,一个方法对应着一个栈的入栈和出栈的过程

               目的:为虚拟机执行java方法(字节码)服务

                Java方法执行的内存模型:每个方法在执行时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息

    本地方法栈:

                特点:线程私有(与虚拟机栈类似)

                目的:为虚拟机使用到的Native方法服务

    程序计数器:

                特点:线程私有, 内存空间较小

                目的:当前线程执行的字节码的符号指示器,记录的是正在执行的虚拟机字节码指令的地址

        通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成

    注意:如果正在执行的是Native方法,这个计数器值为空。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。

    实战:通过javap -verbose Test.class对编译后的字节码进行分析,运行时数据区个部分的变化情况

    相关文章

      网友评论

        本文标题:Java虚拟机的几个什么:是什么,为什么使用,作用,原理,实战分

        本文链接:https://www.haomeiwen.com/subject/tukzsxtx.html