做网站多少钱一般建设工程合同管理考试试题及答案

当前位置: 首页 > news >正文

做网站多少钱一般,建设工程合同管理考试试题及答案,dw网页代码,wordpress点击图片直接相册浏览JVM概述 基本介绍 JVM#xff1a;全称 Java Virtual Machine#xff0c;即 Java 虚拟机#xff0c;一种规范#xff0c;本身是一个虚拟计算机#xff0c;直接和操作系统进行交互#xff0c;与硬件不直接交互#xff0c;而操作系统可以帮我们完成和硬件进行交互的工作特… JVM概述 基本介绍 JVM全称 Java Virtual Machine即 Java 虚拟机一种规范本身是一个虚拟计算机直接和操作系统进行交互与硬件不直接交互而操作系统可以帮我们完成和硬件进行交互的工作特点 Java 虚拟机基于二进制字节码执行由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆、一个方法区等组成JVM 屏蔽了与操作系统平台相关的信息从而能够让 Java 程序只需要生成能够在 JVM 上运行的字节码文件通过该机制实现的跨平台性 Java 代码执行流程Java 程序 –编译– 字节码文件 –解释执行– 操作系统WinLinuxJVM 结构JVM 是执行Java 程序的虚拟计算机系统那我们来看看执行过程首先需要准备好编译好的Java 字节码文件即class文件计算机要运行程序需要先通过一定方式类加载器将class 文件加载到内存中运行时数据区但是字节码文件是JVM定义的一套指令集规范并不能直接交给底层操作系统去执行因此需要特定的命令解释器执行引擎将字节码翻译成特定的操作系统指令集交给CPU 去执行这个过程中会需要调用到一些不同语言为Java 提供的接口例如驱动、地图制作等这就用到了本地Native 接口本地库接口。 ClassLoader负责加载字节码文件即class 文件class 文件在文件开头有特定的文件标示并且ClassLoader 只负责class 文件的加载至于它是否可以运行则由Execution Engine 决定。Runtime Data Area是存放数据的分为五部分Stack虚拟机栈Heap堆Method Area方法区PC Register程序计数器Native Method Stack本地方法栈。几乎所有的关于Java 内存方面的问题都是集中在这块。Execution Engine执行引擎也叫Interpreter。Class 文件被加载后会把指令和数据信息放入内存中Execution Engine 则负责把这些命令解释给操作系统即将JVM 指令集翻译为操作系统指令集。Native Interface负责调用本地接口的。他的作用是调用不同语言的接口给JAVA 用他会在Native Method Stack 本地方法栈中记录对应的本地方法然后调用该方法时就通过Execution Engine 加载对应的本地lib。原本多用于一些专业领域如JAVA驱动地图制作引擎等现在关于这种本地方法接口的调用已经被类似于Socket通信WebService等方式取代。 JVM、JRE、JDK 对比 JDK(Java SE Development Kit)Java 标准开发包提供了编译、运行 Java 程序所需的各种工具和资源JRE( Java Runtime Environment)Java 运行环境用于解释执行 Java 的字节码文件 架构模型 Java 编译器输入的指令流是一种基于栈的指令集架构。因为跨平台的设计Java 的指令都是根据栈来设计的不同平台 CPU 架构不同所以不能设计为基于寄存器架构 基于栈式架构的特点 设计和实现简单适用于资源受限的系统使用零地址指令方式分配执行过程依赖操作栈指令集更小编译器容易实现 零地址指令机器指令的一种是指令系统中的一种不设地址字段的指令只有操作码而没有地址码。这种指令有两种情况一是无需操作数另一种是操作数为默认的隐含的默认为操作数在寄存器ACC中指令可直接访问寄存器一地址指令一个操作码对应一个地址码通过地址码寻找操作数 不需要硬件的支持可移植性更好更好实现跨平台 基于寄存器架构的特点 需要硬件的支持可移植性差性能更好执行更高效寄存器比内存快以一地址指令、二地址指令、三地址指令为主 生命周期 JVM 的生命周期分为三个阶段分别为启动、运行、死亡 启动当启动一个 Java 程序时通过引导类加载器bootstrap class loader创建一个初始类initial class对于拥有 main 函数的类就是 JVM 实例运行的起点运行 main() 方法是一个程序的初始起点任何线程均可由在此处启动在 JVM 内部有两种线程类型分别为用户线程和守护线程JVM 使用的是守护线程main() 和其他线程使用的是用户线程守护线程会随着用户线程的结束而结束执行一个 Java 程序时真真正正在执行的是一个 Java 虚拟机的进程JVM 有两种运行模式 Server 与 Client两种模式的区别在于Client 模式启动速度较快Server 模式启动较慢但是启动进入稳定期长期运行之后 Server 模式的程序运行速度比 Client 要快很多Server 模式启动的 JVM 采用的是重量级的虚拟机对程序采用了更多的优化Client 模式启动的 JVM 采用的是轻量级的虚拟机 死亡 当程序中的用户线程都中止JVM 才会退出程序正常执行结束、程序异常或错误而异常终止、操作系统错误导致终止线程调用 Runtime 类 halt 方法或 System 类 exit 方法并且 Java 安全管理器允许这次 exit 或 halt 操作 内存结构 内存概述 内存结构是 JVM 中非常重要的一部分是非常重要的系统资源是硬盘和 CPU 的桥梁承载着操作系统和应用程序的实时运行又叫运行时数据区JVM 内存结构规定了 Java 在运行过程中内存申请、分配、管理的策略保证了 JVM 的高效稳定运行 Java1.8 以前的内存结构图Java1.8 之后的内存结果图 线程运行诊断 定位jps 定位进程 IDjstack 进程 ID用于打印出给定的 Java 进程 ID 或 core file 或远程调试服务的 Java 堆栈信息 常见 OOM 错误 java.lang.StackOverflowErrorjava.lang.OutOfMemoryErrorjava heap spacejava.lang.OutOfMemoryErrorGC overhead limit exceededjava.lang.OutOfMemoryErrorDirect buffer memoryjava.lang.OutOfMemoryErrorunable to create new native threadjava.lang.OutOfMemoryErrorMetaspace
面试题 Java程序是怎么运行的 首先需要准备好编译好的Java 字节码文件即class文件计算机要运行程序需要先通过一定方式类加载器将class 文件加载到内存中运行时数据区但是字节码文件是JVM定义的一套指令集规范并不能直接交给底层操作系统去 执行因此需要特定的命令解释器执行引擎将字节码翻译成特定的操作系统指令集交给CPU 去执行这个过程中会需要调用到一些不同语言为Java 提供的接口例如驱动、地图制作等这就用到了本地Native 接口本地库接口。如下图 JVM包含哪几部分 JVM 主要由四大部分组成ClassLoader类加载器Runtime Data Area运行时数据区内存分区Execution Engine执行引擎Native Interface本地库接口下图可以大致描述JVM 的结构。