JackRo7 2015-10-23 09:18 采纳率: 100%
浏览 7846
已采纳

BufferedReader与BufferedWriter流这样用不关闭会一直驻留在内存中吗

下面是代码部分:

    public static void count() throws IOException {
        Properties prop = new Properties();

        File file = new File("app.ini");

        if (!file.exists())
            file.createNewFile();

        prop.load(new BufferedReader(new FileReader(file)));

        int count = 0;
        String appRunCount = prop.getProperty("appruncount");
        if (appRunCount != null) {
            count = Integer.parseInt(appRunCount);
            if (count >= 5) {
                System.out.println("试用次数超过限制,请注册后使用");
                return;
            }
        }
        count++;

        prop.setProperty("appruncount", count + "");
        prop.store(new BufferedWriter(new FileWriter(file)), "");
    }

请问在我这段代码里,BufferedReader与BufferedWriter流不显示的去关闭会占用内存吗?由于匿名对象使用方便就这么写了,但是我又怕不关闭流占用内存。其实我想问的是程序会自动的帮我关闭这两个流吗?或者说匿名对象用完之后自动释放不会占用内存呢?

  • 写回答

4条回答 默认 最新

  • 毕小宝 博客专家认证 2015-10-23 11:04
    关注

    方法调用结束后,这两个对象都会被销毁的,它们的内存空间会被回收。
    之所以需要关闭流资源,是为了释放资源,因为io是操作系统的动作,例如如果没有关闭,那么这个IO资源就一直被java进程占用,知道java应用结束,这期间操作系统的其他进程就不能访问该IO资源了。
    如果你在java代码中访问某个记事本文件,此时你再直接打开该文件,可能就不能打开或者数据不是最新的信息。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名