【逆流而上】[Java]Java内存结构、异常详解

Java 内存结构

java 内存主要分为 5 部分,分别是程序计数器,虚拟机栈,本地方法栈,堆,方法区
【逆流而上】[Java]Java内存结构、异常详解_第1张图片
1、程序计数器
线程私有,即每个线程都会有一个,线程之间互不影响,独立存储。
代表着当前线程所执行字节码的行号指示器。
2、虚拟机栈
线程私有, 它的生命周期和线程相同
描述的是 java 方法执行的内存模型:每个方法在执行的同时多会创建一个栈帧用于存储局部变量表、操作数栈、动态链表、方法出口等信息。每一个方法从调用直至完成的过程,就对应着一个栈帧在虚拟机中入栈到出栈的过程。
3、本地方法栈
同虚拟机栈,只不过本地方法栈位虚拟机使用到的 native 方法服务。
4、 java 堆
线程共享 主要用于分配对象实例和数组
5、方法区
线程共享 用于存储已被虚拟机加载的类信息、常量、静态变量、即使编译后的代码等数据。

Java异常

【逆流而上】[Java]Java内存结构、异常详解_第2张图片
Java 认为 Checked 异常都是可以被处理的异常,所以 Java 程序必须显示处
理 Checked 异常。如果程序没有处理 Checked 异常,该程序在编译时就会
发生错误无法编译。我们比较熟悉的 Checked 异常有
Java.lang.ClassNotFoundException
Java.lang.NoSuchMetodException
java.io.IOException
Runtime 异常如除数是 0 和数组下标越界等,其产生频繁,处理麻烦,若显
示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动
检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示
捕获它们。我们比较熟悉的 RumtimeException 类的子类有
Java.lang.ArithmeticException
Java.lang.ArrayStoreExcetpion
Java.lang.ClassCastException
Java.lang.IndexOutOfBoundsException
Java.lang.NullPointerException
Error 是 throwable 的子类,代表编译时间和系统错误,用于指示合理的应用程序不应该试图捕获的严重问题。当程序发生不可控的错误时,通常做法是通知用户并中止程序的执行。与异常不同的是,Error 及其子类的对象不应被抛出。 Error 由 Java 虚拟机生成并抛出,包括动态链接失败,虚拟机错误等。程序对其不做处理。

你可能感兴趣的:(java,内存,异常)