我该如何处理 /tmp/jar_cache#######.tmp?

how can i handle with /tmp/jar_cache#######.tmp?

我正在使用带有 EmbeddedTomcat 的 springboot 2.1.4。当我 运行 我的服务器时,会创建 /tmp/jar_cache###.tmp。我该如何处理 jar_cache###.tmp?

我正在使用 CENTOS 7 和 java 版本“1.8.0_162”。

  1. 如果我将 tmpdir 更改为其他目录,而不是 /tmp,那么我该如何处理默认创建的大量 jar_cache###?

  2. 使用 /tmp 目录,如果在我的应用程序中使用的 jar_cache 被清除怎么办?

java    46030  www  DEL       REG              253,2                2830 /tmp/jar_cache7122103988160656171.tmp
java    46030  www  DEL       REG              253,2                2842 /tmp/jar_cache8134973409906757503.tmp

java    46030  www   25r      REG              253,2    414240      2830 /tmp/jar_cache7122103988160656171.tmp (deleted)
java    46030  www   27r      REG              253,2    800016      2842 /tmp/jar_cache8134973409906757503.tmp (deleted)

在某些版本的 SpringBoot 中显然存在导致 jar_cache 个文件(处于 DEL 状态)累积的错误:

根据问题跟踪器 links,这已在 SpringBoot 2.0.0 中修复。

现在我从你的问题中看出你使用的是 2.1.4,所以你的问题可能不是上面的具体问题。但是,第一个 link 中可能会有一些线索可以帮助您找出 您的 问题是由什么引起的。

回答您的问题:

  1. 是的,这些是默认创建的,但在您的应用程序重新启动时应清除它们。
  2. 我预计更改 TMPDIR 会影响文件的创建位置。试试看!
  3. 如果应用程序仍然打开文件,则从目录中删除文件不会释放任何文件space。

可能 也可以通过调用 System.gc() 使文件消失。是的,出于性能原因调用 System.gc() 通常不是一个好主意。但是如果缓存文件确实是个问题,这个可能是一个解决方法。