В первом коде компилятор выдает OutOfMemoryError, а во втором нормально пережовывает. Различия только в инициализации line. Может кто-нибудь объяснить как на мой взгляд два абсолютно одинаковых кода имеют столь весомые различия?
static {
    String line;
    try {
        FileReader fr = new FileReader(Statics.FILE_NAME);
        BufferedReader br = new BufferedReader(fr);
        line = br.readLine();
        while (line != null) {
            lines.add(line);
        }
        br.close();
        fr.close();
    } catch (FileNotFoundException fN) {
        fN.printStackTrace();
    } catch (IOException e) {
        System.out.println(e);
    }
}
static {
        String line;
        try {
            FileReader fr = new FileReader(Statics.FILE_NAME);
            BufferedReader br = new BufferedReader(fr);

            while ((line = br.readLine()) != null) {
                lines.add(line);
            }
            br.close();
            fr.close();
        } catch (FileNotFoundException fN) {
            fN.printStackTrace();
        } catch (IOException e) {
            System.out.println(e);
        }
    }
}