Java资源泄露

本文探讨了Java中两种常见的资源泄露情况:正常情况下未关闭的FileOutputStream导致的泄露,以及在异常处理中因异常发生而未能执行close()操作所造成的资源泄露。通过示例代码展示了如何防止这些问题,强调了正确管理和释放资源的重要性。

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



1. 正常情况下的资源泄露

    FileOutputStream fos = newFileOutputStream(new File("test.txt"));

    ...


    fos再也没有被关闭。


2. 异常情况下的资源泄露

    1) 

    FileOutputStream fos = newFileOutputStream(new File("test.txt"));

    fos.write(7);          //  write()发生异常,导致fos.close()没有被执行。

    fos.close();


    2)

    FileOutputStream fos1 = newFileOutputStream(new File("test1.txt"));

    FileOutputStream fos2 = newFileOutputStream(new File("test2.txt"));


    fos1.close();         // close()发生异常,导致fos2没有close。—— close()会调用flush(),所以可能抛出异常。

    fos2.close();



Java的try/catch的异常机制,是一种checked exception机制。目的是用来报告程序执行时出现的错误。
当异常发生时,程序不能继续执行,会退出。在这样的情况下探求“资源泄露”,意义不大,是舍本逐末的做法。


  








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值