为什么/tmp中-XX:+LogCompilation下会有多余的日志?

问题描述 投票:0回答:1

-XX:+LogCompilation -XX:LogFile=/path/to/file.log
下运行时在热点上记录编译时,日志会写入
/path/to/file.log
,这很好,但不同的(更多)日志也会写入 两个
/tmp/hs_c<someid>_pid<mypid>.log
文件,这是我没想到的。终止应用程序时,其中一个文件将被删除,但另一个文件仍保留在那里。

发生了什么事,如何将日志记录保留到给定的日志文件,但停止记录到 /tmp 文件?

jvm jit jvm-hotspot
1个回答
0
投票

-XX:+LogCompilation
打开时,HotSpot 会记录全局编译事件(例如,当提交新的编译任务时或创建新的编译方法时)以及每个编译器线程的详细编译活动。

为了避免混合编译器线程的并发输出,每个线程将自己的日志写入专用的临时文件,该临时文件会在该线程终止或 JVM 退出后合并到

LogFile
中。
/tmp/hs_cNNN.log
文件是这些每线程日志。如果 JVM 异常终止,文件可能会保持未删除状态。

如果您不喜欢

LogCompilation
的详细输出,请尝试使用
-XX:+PrintCompilation
。或者,启用 Flight Recorder 来获取以 JFR 格式记录的 JIT 相关事件。

© www.soinside.com 2019 - 2024. All rights reserved.