簡體   English   中英

bufferedwriter close()和flush()方法的內存影響是什么?

[英]What is memory effects of bufferedwriter close() & flush() methods?

我在這里很困惑。 我正在准備使用SCJP,我編寫了一個小的遞歸以在flush()和close()方法之前|之后檢查BufferedWriter內存分配。 請參見下面的代碼塊,我剛剛將我的桌面文件寫入了文本文件。

import java.io.*;

public class Myexception{

    private static String lvl = "";
    static BufferedWriter bw;
    private static File source = new File("C:\\Users\\"+System.getProperty("user.name")+"\\Desktop\\New folder\\myTest.txt");

    public static void main(String[] args) throws IOException {

        Runtime rt = Runtime.getRuntime();

        System.out.println("Free memory before recursive: " + rt.freeMemory());

        bw = new BufferedWriter(new FileWriter(source));

        checkFiles(new File("C:\\Users\\"+System.getProperty("user.name")+"\\Desktop"), 0);

        System.out.println("Memory after recursive: " + rt.freeMemory());

        bw.flush();
        bw.close();
        lvl = null;

        System.out.println("Memory after clean up: " + rt.freeMemory());
    }
    static void checkFiles(File file, int level) throws IOException{

        if(!file.exists()){

            System.out.println("File doesnt exist: " + file.getName() + file.getPath());
            return;
        }

        for(String s:file.list()){

            if(new File(file.getPath() + "\\" +  s).isDirectory()){

                bw.newLine();
                bw.write(lvl + "Directory: " + s);

                lvl += " ";

                checkFiles(new File(file.getPath() + "\\" +  s), level+1);

            }else{

                bw.newLine();
                bw.write(lvl + "File: " + s);

            }
        }
    }
}

輸出很好,但是我不明白,在flush()和close()之前的可用內存與在flush()和close()之后的可用內存相同。請查看我的輸出:

Free memory before recursive: 126150232
Memory after recursive: 104461304
Memory after clean up: 104461304

我已經檢查了現有的主題,但是找不到確切的解釋。 我期待bw.close()之后會有更多的可用內存。

謝謝

關閉和刷新流與“清理內存”無關,它們確保將BufferedStream中的數據刷新到該流指向的任何位置,例如通常是磁盤或網絡套接字。 閱讀JavaDoc,它絕不意味着它有任何作用或會影響垃圾回收。 您需要重新學習,然后再花錢購買毫無價值的證書。

僅在垃圾收集器運行后才清除內存。 在此之前,您將看不到內存消耗的任何變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM