java——虚拟机、线程

java虚拟机:

  是一台想象中的机器,有自己想象的硬件(处理器、堆栈、寄存器等)以及相应的指令系统。

  生命周期:当执行java程序时,虚拟机开始运行,程序结束虚拟机停止。同一台计算机每多运行一个程序,就会多运行一个虚拟机。虚拟机开始于main()方法。

  java虚拟机的体系结构:

    1.java指令集:java虚拟机大约有248个字节码,每个字节码执行一种基本cpu运算。java指令集中的指令必须包含一个单字节的操作用于指定要执行的操作,有0个或多个操作数用于提供操作的参数或数据。

    2.寄存器:用来保存运行状态,包括以下四种:

      pc:计数器

      optop:操作数栈顶指针

      frame:指向当前执行方法所爱环境的指针

      vars:指向当前执行方法使用的局部变量中的第一个变量的指针

    3.栈:虚拟机存储信息的主要方式。当虚拟机得到一个java字节码的应用程序之后,就会为该程序的每一个类的每一个方法创建一个栈区域,用于保存方法的状态信息。java栈区域有三种:

      局部变量区:保存这一个类中所有方法用到的局部变量,vars寄存器指向局部变量区中的变量表的第一个局部变量。

      运行环境区:用于存储解释器对java字节码解释中需要的信息(上次调用方法,局部变量指针,操作数的栈顶和栈底的指针)。执行环境是执行一个方法的控制中心。

      操作数区:存储运算所需要的操作数以及运算结果。

    4.垃圾收集堆:java类的实例对象所需的空间被分配到堆上,解释器负责为类实例对象分配空间,当对象已经使用完毕便将他回收到堆中。

    5.方法区:用于存储方法的字节码

java线程分为守护线程和普通线程。

守护线程:java虚拟机自己创建并使用的线程,当一个程序的非守护线程终止,即使还有守护线程运行,应用程序也将被终止,守护程序是应用于后台为其他线程提供服务的。

原文地址:https://www.cnblogs.com/gaoquanquan/p/9749588.html