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流不显示的去关闭会占用内存吗?由于匿名对象使用方便就这么写了,但是我又怕不关闭流占用内存。其实我想问的是程序会自动的帮我关闭这两个流吗?或者说匿名对象用完之后自动释放不会占用内存呢?

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

对象调用结束,虚拟机会销毁对象,但是不关闭可能会出现问题

这个问题还真没有仔细想过,用的时候很多是直接使用了。
看了一些资料后,我的看法是既然是匿名对象,肯定是要被回收的,但是什么时候回收就不一定了,因此建议你自己处理输入输出流的关闭操作。

可以参见下面的讲解:
中文的:http://www.iteye.com/problems/78952
英文的:https://community.oracle.com/thread/2106780?start=0&tstart=0

感谢楼上的讲解与分享