为什么Java8会在当前目录下生成一个以数字命名的文件?
Why does Java 8 generate a numerically named file in the current directory?
注意到在 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_SlowNotify全部8J0sun.rt._sync_FailedSpins@J8sun.rt._sync_SuccessfulSpins8J0sun.rt._sync_PrivateA8J0sun.rt._sync_PrivateB@J8sun.rt._sync_MonInCirculation8J0sun.rt._sync_MonScavenged8J0sun.rt._sync_MonExtant
我们现在在启动 "java" 命令的目录中有超过 6,000 个 32 KB 的文件,文件名是数字。
这是在生产服务器上。我们在开发服务器上没有同样的问题。但是,有问题的用户可以登录开发服务器(比如使用腻子)——而用户不能在生产服务器上登录。
我想知道是什么原因导致创建所有这些文件以及如何防止它。
搜索 "readable" 行中的几个符号似乎指向 hsperfdata 工件;参见 this Github hsperfdata parser project。在 java
退出后,它们很可能是安全的。
注意:如果这些是 hsperfdata 工件,则数字是进程标识符。您可能将这些放在开发系统的常用临时目录中。
(最初假设剩余文件 可能 是从移除的 JAR 文件中提取的 class 文件工件。)
注意到在 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_SlowNotify全部8J0sun.rt._sync_FailedSpins@J8sun.rt._sync_SuccessfulSpins8J0sun.rt._sync_PrivateA8J0sun.rt._sync_PrivateB@J8sun.rt._sync_MonInCirculation8J0sun.rt._sync_MonScavenged8J0sun.rt._sync_MonExtant
我们现在在启动 "java" 命令的目录中有超过 6,000 个 32 KB 的文件,文件名是数字。
这是在生产服务器上。我们在开发服务器上没有同样的问题。但是,有问题的用户可以登录开发服务器(比如使用腻子)——而用户不能在生产服务器上登录。
我想知道是什么原因导致创建所有这些文件以及如何防止它。
搜索 "readable" 行中的几个符号似乎指向 hsperfdata 工件;参见 this Github hsperfdata parser project。在 java
退出后,它们很可能是安全的。
注意:如果这些是 hsperfdata 工件,则数字是进程标识符。您可能将这些放在开发系统的常用临时目录中。
(最初假设剩余文件 可能 是从移除的 JAR 文件中提取的 class 文件工件。)