[英]Java webapp memory leak when using ScheduledExecutorService
[英]Java Memory Leak with ScheduledExecutorService
有人可以解释为什么以下代码导致内存泄漏?
从~27 MB开始:
// ------------------------------
// executer service
ScheduledExecutorService $exec = Executors.newSingleThreadScheduledExecutor();
$exec.scheduleAtFixedRate(new Runnable()
{
@Override
public void run(){
try{
Process $p = Runtime.getRuntime().exec("tasklist /fi \"Imagename eq mspaint.exe\"");
InputStreamReader $ir = new InputStreamReader($p.getInputStream());
BufferedReader $br = new BufferedReader($ir);
String $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("Error" + $ex);}
}// run() end
} /* runnable object end */, 0, 50, TimeUnit.MILLISECONDS);
// ------------------------------
你没有正确清理这个过程。 这可能会导致内存泄漏。 您需要在进程运行时(可能并行)清除标准错误和标准输出。 这并不简单,API也不是最好的。
最后,让我补充一点来实际解决明显的泄漏,你最好使用像Memory Analyzer这样的工具,它会为你找到潜在的泄漏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.