gpt4 book ai didi

ScheduledExecutorService 的 Java 内存泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:31 32 4
gpt4 key购买 nike

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

从 ~27 MB 开始:

# 循环 | MB消耗

  • 400.... | 44岁
  • 800.... | 60 岁
  • 1200.. | 77岁
  • 1600.. | 99
  • 2000.. | 99
  • 3000.. | 116,0
  • 4000.. | 116,4
  • 5000.. | 124
// ------------------------------
// 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 也不是最好的。

参见示例 thisthe javadocs获取更多信息。

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

关于ScheduledExecutorService 的 Java 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22239279/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com