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虚拟机自己创建并使用的线程,当一个程序的非守护线程终止,即使还有守护线程运行,应用程序也将被终止,守护程序是应用于后台为其他线程提供服务的。
java——虚拟机、线程的更多相关文章
- Java虚拟机--线程安全和锁优化
Java虚拟机--线程安全和锁优化 线程安全 线程安全:当多线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象 ...
- (转)《深入理解java虚拟机》学习笔记10——并发编程(二)
Java的并发编程是依赖虚拟机内存模型的三个特性实现的: (1).原子性(Atomicity): 原子性是指不可再分的最小操作指令,即单条机器指令,原子性操作任意时刻只能有一个线程,因此是线程安全的. ...
- (1)java虚拟机概念和结构图
java虚拟机解构图一 java虚拟机解构图二 java虚拟机结构图三 [1]类加载系统 --->负责从文件系统或网络中加载class信息,存放至方法区的内存空间[2]java堆 ...
- Java虚拟机——进度1
Java 虚拟机 一.Java虚拟机的基本结构 ①类加载子系统:从文件系统或者网络中加载Class信息,存放在方法区中. ②方法区中存放放进来的Class信息,也包括一些运行时常量池信息包 ...
- JVM基础系列第6讲:Java 虚拟机内存结构
看到这里,我相信大家对于一个 Java 源文件是如何变成字节码文件,以及字节码文件的含义已经非常清楚了.那么接下来就是让 Java 虚拟机运行字节码文件,从而得出我们最终想要的结果了.在这个过程中,J ...
- java使用java.lang.management监视和管理 Java 虚拟机
ClassLoadingMXBean 用于 Java 虚拟机的类加载系统的管理接口. CompilationMXBean 用于 Java 虚拟机的编译系统的管理接口. GarbageCollector ...
- Java虚拟机(一)结构原理与运行时数据区域
我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文 ...
- JVM规范系列第2章:Java虚拟机结构
本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现. 记住:JVM规范是一种高度抽象行为 ...
- The Structure of the Java Virtual Machine Java虚拟机结构 虚拟机内存模型
小结: 1.实现一台Java虚拟机,只需正确读取class文件中的每一条字节码指令且能正确执行这些指令所蕴含的操作. 2.设计者决定:运行时数据区的内存如何布局,选择哪种垃圾收集算法,是否对虚拟机字节 ...
- 深入理解java虚拟机---虚拟机工具jconsole(十八)
Jconsole,Java Monitoring and Management Console. Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到.它用于连接正在运行的本地或者远 ...
随机推荐
- Linux如何修改网络环境参数
如下设置: 检验是否可以连通,就使用ping命令ping 网关开始的时候总是现实unreachable 设置IP:sudo ifconfig eth0 133.133.133.190 netmask ...
- java全栈day12----final static 匿名对象 内部类 包的声明与访问
final关键字概念 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后, ...
- 带有通配符的字符串匹配算法-C/C++
日前某君给我出了这样一道题目:两个字符串,一个是普通字符串,另一个含有*和?通配符,*代表零个到多个任意字符,?代表一个任意字符,通配符可能多次出现.写一个算法,比较两个字符串是否相等. 我花了四个小 ...
- spring、spring mvc以及IOC的阅读
spring vs spring-mvc spring是应用级框架 spring mvc只是一个mvc框架 spring现在包含很多子模块,我们用的最多的是依赖注入. spring模块可分为以下: C ...
- 判断本地是否存在Jquery文件,如果不存在则使用CDN加速的Jquery文件
<script>//判断是否成功将Jquery库引入,如果没有成功引入则引入本地Jquery库if (typeof jQuery == 'undefined') {document.wri ...
- SGML DTD
最近处理SGML文档时,碰到的DTD语法: <!ELEMENT name - - (#PCDATA)> 说明:- - 代表 name 元素有开始标识和结束标识 <!ELEMENT ...
- C++时间操作的汇总
. 获取当前时间 time_t cur_time = time(NULL); . 把整数时间转为字符串时间 string GetStringTime(const time_t time) { stru ...
- SQL基础(一)
经过这段时间对SQL的基础学习,下面对自己的学习做个总结或者也可以说是个回顾吧! 我练习的是在oracle数据库平台上,并且安装了PLSQL Developer工具.下面是我从小白开始一路学习的回顾: ...
- P4011 孤岛营救问题
\(\color{#0066ff}{题目描述}\) 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克 ...
- BFS【bzoj1667】: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛
1667: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛 Description 经过跟Farmer John长达数年的谈判,奶牛们终于如愿以偿地得到了想要的旱冰鞋.农场上大 ...