用Java读取文件时内存泄漏

时间:2014-06-24 13:09:01

标签: java json garbage-collection fileinputstream

我有一个54,120字节的JSON文件,全部在一行

我正在尝试使用以下方法将其读入Android应用程序中的String:

//Method from class FileManager
public String readInternalFile(String filename) throws IOException {
        Log.d(getClass().getName(),"Reading Internal File: " + filename);

        // Open file
        FileInputStream fIS = context.openFileInput(filename);
        Log.d(getClass().getName(),"File is " + fIS.available() + " bytes");

        // Process file
        String s = "";
        int ch;
        while ((ch = fIS.read()) != -1) {
            s += (char) ch;
        }

        //Close InputStream
        if(fIS!= null){
            fIS.close();
        }
        Log.d(getClass().getName(),"File is " + s.length() + " characters long");
        return s;
}

当我在我的JUnit测试应用程序或模拟器中运行它时,我得到一个垃圾收集器的日志文本墙:

Log data

这似乎永远不会结束,并且正在减慢我的申请速度。有没有办法让我读到这个不会导致这个?

如果它有助于访问JSON文件here。这只是一个新闻Feed。

1 个答案:

答案 0 :(得分:0)

此问题的解决方案是将JSON文件格式化,然后将其读取到" 漂亮的打印"使用新行和缩进的样式,然后使用BufferedReaderreadLine()