首页 > 编程语言 >java——虚拟机、线程

java——虚拟机、线程

时间:2023-07-28 17:02:07浏览次数:33  
标签:操作数 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,字节,虚拟机,局部变量,线程
From: https://www.cnblogs.com/nr-zhang/p/17588103.html

相关文章

  • java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet
    环境信息:JDK17、Tomcat10问题原因我这里编译,打包都是好的,但是一运行发现就报错。错误的原因是Tomcat10里也自带了一些lib包,可以打开Tomcat下lib文件夹,这又涉及到了包的加载顺序了一打开发现Tomcat里的是 JakartaEE,我Maven里引用的还是JavaEE导致的。JavaEE的servlet......
  • 学习Java的第8天
    数据拓展publicclassDemo03{publicstaticvoidmain(String[]args){//*整数拓展进制二进制0b**十进制八进制**0**十六进制**0x**inti=10;inti2=010;//**八进制0**inti3=0x10;//**十六进制0x0~9A~F16**System.out.println(i);System.out......
  • Java学习1
    java学习01简单写写学习期间不知道or感兴趣的一些东西计算机相关前置知识计算机结构系统软件DOS(DiskOperatingSystem)WindowsLinuxUnix,Mac,Android,IOS...windows快捷键关闭窗口 ALT+F4永久删除文件Shift+Delete快捷指令win+R打开我的电......
  • TestNG 使 Java 单元测试轻而易举
    http://www.ibm.com/developerworks/cn/java/j-testng/在每个现代软件包的构造阶段,测试这一实践都扮演着中心角色。过去那种先编写代码,然后有空的时候再测试(或者根本不测试)的日子已经一去不返,因为大多数开发人员现在认识到需要采用编码和测试彼此交织、同步推进的软件方法论,以便尽......
  • java多线程学习-java.util.concurrent详解
    java多线程学习-java.util.concurrent详解(一)Latch/Barrier   Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent,提供了大量高级工具,可以帮助开发者编写高效、易维护、结构清晰的Java多线程程序。从这篇blog起,我将跟大家一起共同学习这些新的Java多线......
  • 进程、线程与协程:并发执行的三种重要概念与应用
    在计算机科学中,进程、线程和协程是实现并发执行的三种重要概念。它们是计算机系统中的核心组成部分,为多任务处理和资源共享提供了有效的解决方案。本文将深入探讨进程、线程和协程的概念、特点及它们在并发编程和系统设计中的应用,帮助读者全面理解并发执行的原理和实践。进程的概念......
  • Java a=a+b和a+=b的区别
    1、对于同样类型的a,b来说两个式子执行的结果确实没有什么区别。但是从编译的角度看吧(武让说的),a+=b;执行的时候效率高。2、对于不同类型的a,b来说2.1不同类型的两个变量在进行运算的时候,我们经常说到的是类型的转换问题。这里,记住两点:一、运算过程中,低精度的类型向高精度类型转......
  • Java面试题 P11:ArrayList和LinkedList区别
    ArrayList:基于动态数组,连续内存存储,适合下标访问(随机访问),扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并指定初始容量可以极大提升性能,甚至超过linkedListLin......
  • Java定时弹窗提示与展示图片
    自顶向下介绍,首先是定时弹窗功能,可以用Java自带的ScheduledExecutorService库完成函数调用。packagehealthReminder;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;publicclassT......
  • 三个线程循环打印ABC10次的几种解决方法
    有三个线程分别打印A、B、C,请用多线程编程实现,在屏幕上循环打印10次ABCABC… 这是一个比较常用的关于线程的考题,一般出现在应届生的校园招聘试卷上。本文给出如下四种解决方法:使用synchronized,wait和notifyAll使用Lock和Condition使用Semaphore使用AtomicInteger使用synchro......