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

关于网站建设的合同协议书谷歌推广电话

关于网站建设的合同协议书,谷歌推广电话,建网站 技术,昆明睿腾科技网站建设Java 虚拟机(Java Virtual Machine,简称 JVM) 概述 JVM 是运行 Java 字节码的虚拟计算机,它是 Java 程序能够实现 “一次编写,到处运行(Write Once, Run Anywhere)” 特性的关键所在。Java 程…

Java 虚拟机(Java Virtual Machine,简称 JVM)

概述

JVM 是运行 Java 字节码的虚拟计算机,它是 Java 程序能够实现 “一次编写,到处运行(Write Once, Run Anywhere)” 特性的关键所在。Java 程序首先被编译成字节码(.class 文件),然后由 JVM 在不同的操作系统和硬件平台上执行这些字节码,屏蔽了底层操作系统和硬件的差异。

体系结构

  • 类加载子系统(Class Loader Subsystem):负责加载字节码文件到 JVM 中。它包括启动类加载器(Bootstrap Class Loader),主要加载 Java 的核心类库,像 java.lang 包下的类等;扩展类加载器(Extension Class Loader),负责加载 Java 扩展库;应用程序类加载器(Application Class Loader),加载用户编写的类路径下的类等。例如,当运行一个简单的 HelloWorld 程序时,应用程序类加载器会把对应的 HelloWorld.class 文件加载进来。
  • 运行时数据区(Runtime Data Areas)
    • 方法区(Method Area):用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。在 HotSpot JVM 中,方法区也常被称为永久代(Permanent Generation,不过在 Java 8 之后,元空间(Metaspace)取代了永久代)。
    • 堆(Heap):这是 JVM 内存管理中最大的一块区域,主要用于存放对象实例。所有的对象实例以及数组都要在堆上分配内存,例如通过 new 关键字创建的对象都会存放在堆中。
    • 虚拟机栈(Java Virtual Machine Stacks):每个线程都有一个私有的虚拟机栈,它描述的是 Java 方法执行的内存模型。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。栈帧中存储了局部变量表、操作数栈、动态连接、方法返回地址等信息。
    • 本地方法栈(Native Method Stacks):和虚拟机栈类似,不过它是为执行本地方法(Native Method,一般是用其他语言编写的与底层系统交互的方法,比如 C 或 C++ 编写的方法)服务的。
    • 程序计数器(Program Counter Register):可以看作是当前线程所执行的字节码的行号指示器。因为在多线程环境下,线程会频繁地切换,而程序计数器能保证每个线程切换回来后能准确地知道下一条要执行的字节码指令。
  • 执行引擎(Execution Engine):负责执行字节码指令。执行引擎会把字节码指令解释执行或者编译成机器码后再执行,像 HotSpot JVM 就采用了即时编译(Just-In-Time Compilation,JIT)技术,对于热点代码(频繁执行的代码)会将其编译成机器码以提高执行效率。

垃圾回收(Garbage Collection,GC)

JVM 自动管理内存,其中很重要的一部分就是垃圾回收机制。它会自动识别并回收那些不再被使用的对象所占用的内存空间。例如,当一个对象没有任何引用指向它时,经过一定的垃圾回收算法(如标记 - 清除算法、复制算法、标记 - 整理算法等)的判断和处理,其占用的内存就会被释放掉,让内存能够得到有效的利用,减少内存泄漏等问题的发生。

重要性及应用场景

JVM 的存在让 Java 开发人员无需过多关注底层硬件和操作系统的差异,专注于业务逻辑开发。在企业级应用开发、安卓应用开发(安卓系统中也有基于 JVM 改造的 Dalvik 虚拟机、ART 虚拟机等)、大数据处理框架(很多大数据框架基于 Java 开发,运行在 JVM 上)等众多场景中广泛应用,保障了 Java 程序稳定、高效地运行。

总之,JVM 是 Java 生态中极为重要的基础支撑,深入理解它对于优化 Java 程序性能、排查内存相关问题等都有着重要的意义。

异常类概述

在 Java 中,异常类(Exception Classes)用于表示程序执行过程中出现的异常情况,它是 Throwable 类的子类。当程序运行过程中发生一些不符合预期的状况,比如试图访问不存在的文件、数组越界、除数为零等,就会抛出对应的异常对象,如果不进行处理,程序通常会终止执行。通过合理地使用异常类,可以更好地控制程序流程,增强程序的健壮性和容错能力。

异常类的层次结构

  • Throwable 类:它是所有异常和错误的超类,位于异常类层次结构的顶层。Throwable 有两个重要的子类,分别是 Exception 和 Error
  • Exception 类:表示程序本身可以处理的异常情况,又可以细分为两类。
    • 受检异常(Checked Exceptions):这类异常是编译器要求必须进行处理的异常,通常是一些在程序运行时可能会出现的可预期的异常情况,比如 IOException(涉及输入输出操作,像文件读取写入时可能出现问题)、SQLException(进行数据库操作时可能产生的异常)等。在方法中如果可能抛出受检异常,要么使用 try-catch 语句块捕获并处理它,要么在方法声明处通过 throws 关键字声明抛出该异常,让调用者去处理。例如:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class CheckedExceptionExample {public static void main(String[] args) {try {File file = new File("test.txt");FileInputStream fis = new FileInputStream(file);// 这里如果文件不存在等情况就会抛出IOException,后续代码进行处理} catch (IOException e) {e.printStackTrace();}}
}
  • 非受检异常(Unchecked Exceptions):也叫运行时异常(Runtime Exceptions),这类异常通常是由于程序员编写代码时的逻辑错误导致的,比如 NullPointerException(对空指针进行操作)、ArrayIndexOutOfBoundsException(数组越界)、ArithmeticException(算术运算异常,像除数为零)等。编译器不会强制要求处理这类异常,但如果发生了也会导致程序异常终止,除非在代码中进行合适的处理。例如:
public class UncheckedExceptionExample {public static void main(String[] args) {int[] arr = new int[5];// 下面这行代码会抛出ArrayIndexOutOfBoundsExceptionSystem.out.println(arr[10]); }
}
  • Error 类:表示严重的、不应该被程序捕获处理的错误情况,一般是 JVM 内部错误或者资源耗尽等非常严重的问题,比如 OutOfMemoryError(内存溢出)、StackOverflowError(栈溢出)等。当出现这类错误时,通常很难通过程序本身去恢复,往往意味着程序需要重新启动或者进行系统层面的调整。例如:
public class ErrorExample {public static void main(String[] args) {// 下面的递归调用如果没有终止条件,会导致栈空间不断被占用,最终抛出StackOverflowErrorrecursiveMethod(); }public static void recursiveMethod() {recursiveMethod();}
}

自定义异常类

除了使用 Java 内置的异常类,开发人员还可以根据具体的业务需求自定义异常类。自定义异常类通常需要继承自 Exception 类(如果是受检异常)或者 RuntimeException 类(如果是非受检异常)。例如,假设在一个电商系统中,当库存不足时想要抛出特定的异常,可以这样定义:

// 自定义受检异常类
public class InsufficientStockException extends Exception {public InsufficientStockException(String message) {super(message);}
}

然后在相关业务逻辑代码中使用:

public class Product {private int stock;public Product(int stock) {this.stock = stock;}public void sell(int quantity) throws InsufficientStockException {if (quantity > stock) {throw new InsufficientStockException("库存不足,无法销售这么多商品");}stock -= quantity;}
}

总之,合理运用异常类并对各种可能出现的异常情况进行妥善处理,对于编写高质量、稳定可靠的 Java 程序是至关重要的。

http://www.yayakq.cn/news/747770/

相关文章:

  • 做特价的网站百度wordpress 页面导出
  • 葫芦岛做网站的公司做网站代理拉不到人
  • 汕头手机端建站模板网站收录大全
  • 企业网站源码带后台管理新媒体 数字营销 网站建设
  • 南通网站建设哪家好湖南常德师范学校
  • 长安做网站展厅设计费取费标准一览表
  • 云南专业网站制作公司自助建站自媒体
  • 泗县网站建设wordpress视频教程百度云
  • 学校网站建设存在的问题牛企网络科技有限公司
  • 做网站 杭州沧州网站建设优化公司
  • 南京行业网站建设物流 网站 模板
  • 忘记网站后台用户名化工行业网站模板
  • 树形菜单的网站代码蜂鸟配送网站谁做的
  • 遵义做网站的网络公司私人pk赛车网站怎么做
  • 写作网站vir手机网站一般宽度做多大的
  • php网站开发背景介绍机床回收网站建设
  • 微信网站如何制作软件性能优化大师
  • 石狮外贸网站建设公司报价大连建设工程信息网官网官网官
  • 做网站定金是多少钱wordpress主题ajax
  • 安卓开发和网站开发三亚旅游攻略
  • 如何优化网站性能淘宝网的网络营销方式
  • 什么是培训网站建设厦门网页制作模板
  • 静态网站开发工具有哪些wordpress去掉标签前缀
  • 网站的demo怎么做南通网站建设方案咨询
  • 昌吉网站建设哪家便宜做网站排名要多少钱
  • 上虞网站建设cms网站建设系统
  • 做电影网站用什么cms睢宁建网站
  • 河北邯郸做网站的公司南山区住房与建设局官方网站
  • 特产网站建设的目的下载了wordpress进不了网页
  • 新绛做网站网站建设 乐视