在 Linux 上,使用-XX+HeapDumpOnOutOfMemoryError
生成的 hprof 文件由运行 java 进程的用户拥有,并且权限为 600。
我知道这些权限是最好的安全性,但是否可以覆盖它们?
您可以使用以下命令启动 JVM
java -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError="chmod g+r java_pid*.hprof" {mainclass} {args}
该命令在创建堆转储后运行。例如,这将允许对当前目录中的所有堆转储文件进行组读取访问。
对于 JRE 7(1.7.0_72) 上的命令中的空格,该-XX:OnOutOfMemoryError
参数对我不起作用。但是指向一个shell脚本(没有空格)可以。例子:
-XX:OnOutOfMemoryError="/path/to/shell/script.sh"