zoukankan      html  css  js  c++  java
  • java虚拟机-jvm学习笔记

    一. java虚拟机的整体结构.

        1。java数据类型:

             primite type 原型数据:int,boolean,float等。原型数据在内存中的存放方式就是直接占用内存,不同于对象的存储是存储对象引用指向heap中的对象。

           returnAddress 数据类型  :是指向java的指令集的指针。

              Reference Types and Values 分为对象,数组,接口三种引用,分别指向对应的heap中某块。

        2。运行时java中内存数据区域:

             pc register 类似于计算机的指令寄存器,存储下一条要执行的代码的内存地址,以便cpu执行,不过jvm的pc register是每个线程独享的

             native 方法栈:用来执行java里的native方法的栈。每个线程独享,存放C指令,用来执行C代码。

             栈:每个线程独享,创建线程时分配,也是具体代码执行地“中转空间”。

                  frame是每次调用方法是分配的,frame里包括localvariables数组和operatestack 。jvm的指令执行方式类似于后缀表达式的执行方式,执行指令前把

                 指令需要的数据准备到operatestack 中,再取出数据执行,零食需要保存的数据就保存到localvariables。比实际的计算机执行方法简单。

            堆:堆空间是jvm里所有线程共享的,记录的是和对象有关的信息。例如:field,method,runtime constant pool。

            本地内存, jvm支持本地内存的使用,direct memory不在jvm的堆栈等空间中,是直接使用的计算机内存。

    二。jvm 指令的执行方式

          jvm的每个线程独立使用stack,所以不会有stack层级的数据冲突(但共享的heap里的数据可能会冲突),程序的最终执行是函数内的指令执行和调用其他函数,

          所以执行单条指令,执行函数,函数的返回值返回到operatestack里

    三。class文件格式

          一些版本信息,类似于很多文件格式

          filed,method,interface,class,superclass

          attribute:设计好的数据类型,记录field,method,interface等其他属性信息

          constant pool :数组类型,记录数据给field,method,attribute等,并通过下标的方式找到数据。

    四。jvm的指令系统。

         jvm的指令系统祥见oracle的文档,里面的说明和详细,指令系统的特点是,每种数据类型(int,float)使用不同的指令。

         指令包括数据从localvariables 和 operatestack 的互相移动,外部数据(磁盘,网络)的输入,数学运算,指令执行的跳转,函数调用。对象,数组新建。抛异常等。

    五。 jvm的gc。

          

  • 相关阅读:
    透过WebGL 3D看动画Easing函数本质
    vmware虚拟机Windows 2003上网问题
    JAVA多态学习2
    h5播放音乐
    Unity3D:粒子系统Particle System
    文章标题
    【面试加分项】java自己定义注解之申明注解
    osgi实战学习之路:1. ant+bnd+felix搭建osgi之HelloWorld
    Android简单实现Socket通信,client连接server后,server向client发送文字数据
    句子开头
  • 原文地址:https://www.cnblogs.com/thinkqin/p/3825279.html
Copyright © 2011-2022 走看看