检测Java线程中的内存泄漏

时间:2015-08-24 10:33:56

标签: java multithreading memory-leaks runnable

我正在处理一个runnable,它读取System流的输入并分析进来的字符串,程序运行良好几天然后停止工作,我猜它可能是由于我的内存泄漏线程,但我似乎无法找到它,任何人都可以建议我的代码是否有问题。

@Override
public void run() {
    BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in));
    while (true) {
        try {
            String inputStr;
            if ((inputStr = bufReader.readLine()) != null) {
                //do something
            } else {
                break;
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果通过批量重定向提供标准输入,则EOF将导致程序执行break,退出while循环并结束线程。

答案 1 :(得分:0)

将bufReader更改为此

InputStreamReader iSR = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(iSR);

然后关闭它们:

bufReader.close();
iSR.close();

注意:如果存在内存泄漏问题,则答案与此相关。