• 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。

          

  • 相关阅读:
    动画 | 视频图解红黑树
    动画:链表快慢指针解题技巧
    全!全!全!GitHub 总星 5.7w+,最赞的操作系统软件都在这里啦!
    视频讲解 | 图解剑指offer:二维数组的查找
    动态规划之空间优化与总结回顾
    LeetCode 图解 | 21.合并两个有序链表
    LeetCode 题解 | 1312. 让字符串成为回文串的最少插入次数
    LeetCode 图解 | 739.每日温度
    LeetCode 图解 | 1214.查找两颗二分搜索树之和
    java基础总结——java中continue&break&return关键字
  • 原文地址:https://www.cnblogs.com/thinkqin/p/3825279.html
Copyright © 2020-2023  润新知