摘要:我想更改方式。当自动创建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