Java知识笔记(面试用)Java垃圾回收机制以及异常类型处理

本文详细介绍了Java的内存回收机制,强调了Java如何通过后台系统级线程自动收集垃圾内存,避免内存泄漏。同时,文章深入讨论了异常处理,包括异常的定义、分类以及Java的异常处理机制,特别提到了受检异常和运行时异常的典型示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

主要关于
java的一些概念。

什么是java内存回收机制

许多程序设计语言允许在运行时动态的分配内存(使用到指向内存块开始地址的指针等),当所分配的内存不再被需要(即:指向内存的指针超出使用范围)时,程序或运行环境最好将这些没有被使用到却申请了的内存释放,如果不释放,这些内存积累的越来越多将会造成内存泄露和溢出

  1. 在C和C++(或其他语言)中 ,程序人员负责内存的释放,需要判断该内存应该在何时进行释放;
  2. 在java中,提供后台系统级线程 用于记录每次内存的分配情况,统计内存指针使用的次数,当系统闲置时,垃圾收集线程将检查是否存在引用次数为0的内存指针,并将这些内存指针标记为可分配,在下次需要进行内存申请的时候将这些内存分配出去;
  3. 总结: Java程序生存期中,后台系统级线程自动的对垃圾内存进行收集,无须用户释放内存。

异常捕获

什么是异常

Java程序在运行中可能会遇到一下问题:

  1. 异常(Exception),一种非致命性问题,可以通过修正后继续执行(一般在进行代码编写时对于语义和语法的使用上发生了错误,系统抛出异常提示程序员进行更改,以修复程序)。例如“文件找不到”、“运算错误(除零溢出)、数组下标越界”等。当程序发生异常时,会抛出相应的异常对象(异常对象包含了异常的详细信息:异常类型或发生异常时的异常状态),可以针对相应的异常对象,编写相应的处理代码块进行异常捕获或进行处理,从生成异常对象的代码块进行回溯,沿方法的调用栈逐层回溯,找到包含相应异常处理的方法,并交给该方法处理。
  2. 错误(Error),致命性问题导致程序运行不下去(如内存溢出等),一般情况严重,无法通过修改代码进行程序的修复。

所以在进行程序开发时的代码块需要拥有一定的强壮性,这就需要程序开发人员考虑到自己即将写下的代码是否存在问题,如一些隐性问题等。

可以通过以下方法进行处理:

  1. 添加if判断 对每一步操作进行if判断,出现错误返回错误编号,这种方法在一定的程度上可以增强代码的强壮性,但是多个if语句进行嵌套会使得代码结构臃肿,而且并不会返回具体的错误信息,而是自己设定的错误编号。

  2. Java的异常处理机制预定义的Exception类,定义了程序产生异常的条件,并且允许程序人员编写特殊的异常处理语句,即:发生异常时,程序会执行相应的代码块。
    如:

    try{
    执行代码
    }catch(捕获异常类型){
    异常处理
    }
    finally{
    统一处理
    }
    

异常处理机制优点:

  1. 将异常处理从常规代码中分离出来,增强了代码的可读性。
  2. 可以根据异常的类型分别进行不同的处理。
  3. 异常的处理借助调用堆栈的先进后远原则(即优先捕获最先出现的异常)。

异常类型

Java在所有预定义包中都定义了异常类和错误类。异常类(父类):Exception;错误类(父类):Error;以上二者是标准类:Throwable的子类;

  1. 受检异常:(checked exception)
    受检异常的所有类都是类Exception类的子类,包括以下类型异常:ClassNotFoundException(类未找到)、FileNotFoundException(文件未找到)、IOException(输入输出异常)、NoSuchMethodException、WriteAbortedException.
  2. 运行时异常:(runtime exception)
    所有运行时异常类都是RuntimeException的子类,而RuntimeException类是Exception类的子类。包括以下类:ArithmeticException(算术异常)、ArrayIndexOutOfBoundsException(数组下标越界异常)、ClassCastException()、EmptyStackException()、IllegalArgumentException()、IllegalStateException()、IndexOutOfBoundsException()、NoSuchElementException()、NullPointerException()、UnsupportedOperationException()、
  3. 错误(Error),指程序运行时,系统发生不正确的情况(内存溢出等),一般这种情况严重,修改程序代码难以处理,不需要程序员进行处理。
  4. 类关系图(异常和错误)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值