ScheduledExecutorService的Java内存泄漏

ScheduledExecutorService的Java内存泄漏,java,memory,memory-leaks,scheduledexecutorservice,Java,Memory,Memory Leaks,Scheduledexecutorservice,有人能解释一下为什么下面的代码会导致内存泄漏吗 从~27 MB开始: #循环| MB消耗 40044 800六十 1200.|77 1600.|九十九 2000年九十九 三千116,0 四千116,4 五千124 //------------------------------ //执行器服务 ScheduledExecutorService$exec=执行者。newSingleThreadScheduledExecutor(); $exec.scheduleAtFixedRate(新的Ru

有人能解释一下为什么下面的代码会导致内存泄漏吗

从~27 MB开始:

#循环| MB消耗
  • 40044
  • 800六十
  • 1200.|77
  • 1600.|九十九
  • 2000年九十九
  • 三千116,0
  • 四千116,4
  • 五千124
//------------------------------
//执行器服务
ScheduledExecutorService$exec=执行者。newSingleThreadScheduledExecutor();
$exec.scheduleAtFixedRate(新的Runnable()
{        
@凌驾
公开募捐{
试一试{
进程$p=Runtime.getRuntime().exec(“任务列表/fi\”Imagename eq mspaint.exe\”;
InputStreamReader$ir=新的InputStreamReader($p.getInputStream());
BufferedReader$br=新的BufferedReader($ir);
字符串$line=$br.readLine();
while($line!=null){
System.out.println($line);
$line=$br.readLine();
}
$line=null;
$br.close();
$br=null;
$ir.close();
$ir=null;
$p=null;
}catch(IOException$ex){System.out.println(“错误”+$ex);}
}//run()结束
}/*可运行对象结束*/,0,50,时间单位为毫秒);
// ------------------------------

您没有正确清理进程。这可能会导致内存泄漏。您需要在进程运行时(可能并行)刷新标准错误和标准输出。这并不简单,API也不是最好的

有关更多信息,请参见示例或


最后,让我补充一点,为了实际解决明显的泄漏问题,最好使用这样的工具,它会为您找到潜在的泄漏。

您确定存在内存泄漏吗?你的最大堆大小是多少?您是否最终得到了一个
OutOfMemoryError
?内存消耗的增加并不一定意味着内存泄漏…为什么要在所有变量名前加
$