Java HotSpot VM命令行堆转储路径选项将主机名用于生成的.hprof



摘要:我想更改方式。当自动创建hprof以合并机器的主机名+进程PID 时,会对其进行命名

长版本:根据文档(https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/clopts001.html)您可以将一个选项传递给VM,以在特定条件下创建堆转储(HeapDumpOnOutOfMemoryError(,并可以通过为生成的.hprof文件指定不同的路径来进一步自定义此行为。您可以更改名称/路径。我想知道的是,是否可以使此选项(HeapDumpPath(包含主机名+PID以具有唯一命名的.hprofs(保存在集中位置,但这是另一个范围(。能做到吗?HeapDumpPath可以接受一个参数来获取主机名吗?

看起来没有将值注入路径的选项。根据您的shell,您应该至少能够插入主机名。PID可能不可能,因为它是在过程开始后创建的。不过,您可以使用不同的变量,如应用程序名称。在bash中,它看起来像这样:

java -XX:+HeapDumpOnOutOfMemoryError -mn256m -mx512m ConsumeHeap -XX:HeapDumpPath=/disk2/dumps/$(hostname)/${APPLICATION_NAME}

只需使用特定Java VM的wrapper.conf文件中的Windows环境变量COMPUTERNAME即可实现。全线为:

wrapper.java.additional.32=-XX:HeapDumpPath=./%COMPUTERNAME%.hprof

最新更新