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

最新文章

  1. .Net mvc 根据前台参数动态绑定对象
  2. 论文笔记--Fast RCNN
  3. css-IE中的border-radius和box-shadow
  4. "2016-10-06T12:09:18.303+0800"
  5. bootstrap table 行号 显示行号 添加行号 bootstrap-table 行号
  6. Objective-c中autorelease的释放时机
  7. CentOS 5.4 制作 Python 2.6 RPM 包的方法
  8. node-mongodb-native的几种连接数据库的方式
  9. Fluent-EDEM耦合计算颗粒流动
  10. HDU 4642 (13.08.25)
  11. DataTable && SqlDataReader帮助理解小程序
  12. Visual Representation of SQL Joins
  13. C# EntityFramework Code First 迁移 降级 回退到空数据库
  14. Java 接口 新特性(Java8)
  15. WPF项目中解决ConfigurationManager不能用(转)
  16. jq中each的中断
  17. ef 更新数据库
  18. mongodb 如何删除 字段值为 json对象中的某个字段值
  19. 初识Spring——Spring核心容器
  20. iOS:UITableView表格视图控件

热门文章

  1. Ubuntu Java Env
  2. vray学习笔记(4)混合材质是个什么东西
  3. redhat图形界面启动后出现桌面但是没有登录界面解决办法
  4. Entity Framework Code-First(18):Turn off DB Initializer
  5. scala的map的操作
  6. js/jq基础(日常整理记录)-3-一个自定义表格
  7. JavaAppArguments示例
  8. CENTOS 7 升级安装 Python 3.5
  9. Java—多线程实现PV效果
  10. 转载Json和Xml的区别,以及它们的底层是如何处理的