Java HotSpot VM命令行HeapDumpPath选项将主机名用于生成的.hprof
摘要:我想改变方式。HPROF是在自动创建时命名的,以合并机器的主机名+进程PIDJava HotSpot VM命令行HeapDumpPath选项将主机名用于生成的.hprof,java,Java,摘要:我想改变方式。HPROF是在自动创建时命名的,以合并机器的主机名+进程PID 长版本:根据文档(),您可以向VM传递一个选项,以便在特定条件下创建heapdump(heapdumponautofmemoryerror),并可以通过为生成的.hprof文件指定不同的路径来进一步自定义此行为。您可以更改名称/路径。我想知道的是,是否有可能使此选项(HeapDumpPath)包含主机名+PID以具有唯一命名的.hprofs(保存在集中位置,但这是另一个作用域)。能做到吗?HeapDumpPath
长版本:根据文档(),您可以向VM传递一个选项,以便在特定条件下创建heapdump(
heapdumponautofmemoryerror
),并可以通过为生成的.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