繁体   English   中英

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

[英]How long are resources used (file descriptor and memory) for Java temporary files (jar_cache####.tmp)?

我正在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'文件一无所知吗?

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

关于此JVM错误,有类似的注释: http : //bugs.sun.com/bugdatabase/view_bug.do?bug_id=4166799

尽管该问题已在不久前结束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM