gpt4 book ai didi

java - Java 临时文件 (jar_cache####.tmp) 使用的资源(文件描述符和内存)多长时间?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:01 25 4
gpt4 key购买 nike

我正在 Linux 系统上运行 Java 应用程序。我注意到该应用程序似乎消耗了大量文件句柄(几天后我收到“打开的文件太多”)。

因此,当我使用“lsof”命令转储与 Java 应用程序关联的所有文件时,我得到如下信息:

java  2690  root  239u  REG  3,2  428057  94300 /tmp/jar_cache5782499018536796385.tmp (deleted)
java 2690 root 240u REG 3,2 58955 94360 /tmp/jar_cache3818842806647031366.tmp (deleted)
java 2690 root 241u REG 3,2 28673 94301 /tmp/jar_cache8793213887943479521.tmp (deleted)
java 2690 root 242u REG 3,2 67115 94302 /tmp/jar_cache3648070144390426051.tmp (deleted)

我在这里只显示 4 个,但实际上有 87 个,而且这个数字会随着时间的推移而增长。

根据我在网上看到的,Java在内部使用这些临时文件什么的,它们是正常的。

如上面的输出所示,它们已被删除,我确认它们实际上不存在于文件系统中。

但我担心的是它没有释放文件描述符或任何相关的内存...有没有人知道这些“/tmp/jar_cache####.tmp”文件或有使用经验这些?

最佳答案

/tmp/jar_cache 文件是在通过 URLClassloader 加载 jar 时生成的。我怀疑应用程序的某些组件正在重新加载,这会导致删除旧的 jar_cache 文件并创建新的文件。文件句柄未释放这一事实似乎是 JVM 问题——我在相同的 JDK 版本中也看到过这种行为。

关于这个 JVM 错误的评论是这样的: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4166799

虽然这个issue早就关闭了。

关于java - Java 临时文件 (jar_cache####.tmp) 使用的资源(文件描述符和内存)多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3815714/

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