为什么Java 8在当前目录中生成数字命名的文件?

时间:2015-12-17 21:02:01

标签: java jvm-hotspot

注意到在Red Hat Linux上从Java 7迁移到Java 8(HotSpot 64位服务器)后开始的奇怪行为。问题发生在一个特定用户身上,他们的工作通常是批量运行,并且无法在登录提示时登录。每次命令如" java -jar hello.jar"由该用户运行,在当前目录中创建一个带有数字文件名的32 KB二进制文件(例如18362或24339)。

其中一个数字文件的前几个可读短语如下所示:

8J0sun.rt._sync_Inflations8J0sun.rt._sync_Deflations@J8sun.rt._sync_ContendedLockAttempts8J0sun.rt._sync_FutileWakeups0J(sun.rt._sync_Parks@J8sun.rt._sync_EmptyNotifications8J0sun.rt._sync_Notifications8J0sun.rt._sync_SlowEnter8J0sun.rt._sync_SlowExit8J0sun.rt._sync_SlowNotify8J0sun .rt._sync_SlowNotifyAll8J0sun.rt._sync_FailedSpins @ J8sun.rt._sync_SuccessfulSpins8J0sun.rt._sync_PrivateA8J0sun.rt._sync_PrivateB @ J8sun.rt._sync_MonInCirculation8J0sun.rt._sync_MonScavenged8J0sun.rt._sync_MonExtant

我们现在有超过6,000个32 KB的文件,在目录中有一个数字文件名," java"命令已启动。

这是在生产服务器上。我们在开发服务器上没有遇到同样的问题。但是,有问题的用户可以登录开发服务器(比如使用putty) - 而用户无法在生产服务器上执行此操作。

我想了解导致所有这些文件创建的原因以及如何防止它。

1 个答案:

答案 0 :(得分:0)

搜索“可读”行中的几个符号似乎指向 hsperfdata 工件;见this Github hsperfdata parser project。在java退出后,它们很可能安全移除。

注意:如果这些是 hsperfdata 工件,则数字是进程标识符。您可能会在通常的临时目录中将这些放在开发系统上。

(原始假设,即剩余的文件可能是从JAR文件中提取的类文件工件。)