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。

 

      

 

posted @ 2014-07-04 23:56  thinkqin  阅读(184)  评论(0编辑  收藏  举报