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

java——虚拟机、线程的更多相关文章

  1. Java虚拟机--线程安全和锁优化

    Java虚拟机--线程安全和锁优化 线程安全 线程安全:当多线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象 ...

  2. (转)《深入理解java虚拟机》学习笔记10——并发编程(二)

    Java的并发编程是依赖虚拟机内存模型的三个特性实现的: (1).原子性(Atomicity): 原子性是指不可再分的最小操作指令,即单条机器指令,原子性操作任意时刻只能有一个线程,因此是线程安全的. ...

  3. (1)java虚拟机概念和结构图

    java虚拟机解构图一 java虚拟机解构图二 java虚拟机结构图三 [1]类加载系统        --->负责从文件系统或网络中加载class信息,存放至方法区的内存空间[2]java堆  ...

  4. Java虚拟机——进度1

    Java 虚拟机       一.Java虚拟机的基本结构 ①类加载子系统:从文件系统或者网络中加载Class信息,存放在方法区中. ②方法区中存放放进来的Class信息,也包括一些运行时常量池信息包 ...

  5. JVM基础系列第6讲:Java 虚拟机内存结构

    看到这里,我相信大家对于一个 Java 源文件是如何变成字节码文件,以及字节码文件的含义已经非常清楚了.那么接下来就是让 Java 虚拟机运行字节码文件,从而得出我们最终想要的结果了.在这个过程中,J ...

  6. java使用java.lang.management监视和管理 Java 虚拟机

    ClassLoadingMXBean 用于 Java 虚拟机的类加载系统的管理接口. CompilationMXBean 用于 Java 虚拟机的编译系统的管理接口. GarbageCollector ...

  7. Java虚拟机(一)结构原理与运行时数据区域

    我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文 ...

  8. JVM规范系列第2章:Java虚拟机结构

    本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现. 记住:JVM规范是一种高度抽象行为 ...

  9. The Structure of the Java Virtual Machine Java虚拟机结构 虚拟机内存模型

    小结: 1.实现一台Java虚拟机,只需正确读取class文件中的每一条字节码指令且能正确执行这些指令所蕴含的操作. 2.设计者决定:运行时数据区的内存如何布局,选择哪种垃圾收集算法,是否对虚拟机字节 ...

  10. 深入理解java虚拟机---虚拟机工具jconsole(十八)

    Jconsole,Java Monitoring and Management Console. Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到.它用于连接正在运行的本地或者远 ...

随机推荐

  1. Linux tee命令

    一.简介 tee以标准输入作为输入,标准输出和文件作为输出.   二.语法 Usage: tee [OPTION]... [FILE]... Copy standard input to each F ...

  2. oracle获取列的备注和数据类型

    select column_name, data_type, data_precision, data_scale, nvl((select t_s.comments from all_col_com ...

  3. 后台传Map到ftl

    userInfo是后台传过来的Map <#list userInfo?keys as key> <tr > <td class="case_id" d ...

  4. ubuntu 15.04默认root用户登陆

    1:给root用户设置密码 sudo passwd root 2:修改/etc/lightdm/lightdm.conf [SeatDefaults]autologin-guest=falseauto ...

  5. js教程--从入门到精通 第一篇 js的前世今生以及js中基本数据类型和引入方式

    1.Javascript前世今生   1.1.什么是Javascript       Javascript运行于Javascript [解释器/引擎]中的解释性脚本语言      Javascript ...

  6. RGB565的转换

    RGB色彩模式也就是“红绿蓝”模式是一种颜色标准,是通过对红(R).绿(G).蓝(B)三种颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道的颜色,这个标准几 ...

  7. python(一):作用域

    与c相比,python作用域很奇特. 在Python中变量的作用域是由它在源代码中的位置决定的,这一点与c相似. python只支持4种作用域,即局部作用域,全局作用域,内置作用域,嵌套作用域. 比较 ...

  8. mvvm模式下在WPF项目中动态加载项目的程序集和类

    在mvvm模式的wpf项目中有个需求需要去加载解决方案的程序集,并且根据程序集去动态加载当前程序集的类,做成下拉框形式. 效果: //全局定义 private ComboBox abList= nul ...

  9. SnackBar使用

    注意:build(BuildContext context)在 Scaffold.of(context)之前时,会报错,解决办法:通过build widget来解决,如下代码. import 'pac ...

  10. BS总结篇­

    学习Web开发差不多三个月了,这个阶段的学习给自己带来的更多的是视觉的盛宴.从CS的世界一下子来到了BS的地盘,心中除了惊喜还是惊喜.在这里还是希望自己对这三月所学的东西做一个阶段性的总结. 话不多说 ...