使用-XX:+LogCompilation时/tmp出现额外日志的原因及解决方法
HotSpot编译日志生成/tmp临时文件的原因及解决方法
原因
你看到的/tmp/hs_c<someid>_pid<mypid>.log文件是HotSpot的编译协作日志,用于JVM内部C1(客户端编译器)和C2(服务器编译器)之间交换编译相关信息。启用-XX:+LogCompilation时,JVM默认会同时生成这类临时日志,它们的内容和你指定的主编译日志不同,仅用于编译器间的内部协作记录。
应用终止后,其中一个文件被删除是JVM的自动清理逻辑,另一个保留则是因为清理机制只针对特定用途的日志文件。
解决方法
要只保留指定的编译日志文件,停止向/tmp写入日志,只需添加额外的JVM参数:
- 添加
-XX:-LogCompilationCollaboration,显式关闭编译协作日志的生成。
完整示例参数
-XX:+LogCompilation -XX:LogFile=/path/to/file.log -XX:-LogCompilationCollaboration
注意:该参数从JDK 8u20版本开始支持,JDK 9及以上版本也兼容。若你的JDK版本过老,需要升级后才能使用该参数。
内容的提问来源于stack exchange,提问作者Martijn
相关产品推荐
相关产品推荐

