问题 从java SDK 1.4.2 SR5开始,之后的版本使用 kill -3不会生成heapdump和javacore文件。 解答 从 java SDK 1.4.2 SR5开始,关于生成heapdump和javacore,引入了一个新的特性去避免系统自动生成heapdump和javacore 造成操作系统文件系统空间被耗尽,这样在java SDK 1.4.2 SR5及之后的版本中,当使用 kill -3时也将不会产生heapdump和javacore文件。 这个新的特性可以允许设置相应的选项来控制java进程在收到相应的信号时最多生成多少个heapdump和javacore文件。要使用这个新的特性,需要首先在操作系统的环境中设置下面的变量: export JAVA_DUMP_OPTS="ONANYSIGNAL(JAVADUMP[n],HEAPDUMP[m])" 其中,n 是最大的javacore生成的数目, m 是最大的heapdump生成的数目。 在设置了这个变量后,java进程在收到kill -3 (或其他的信号)时将会生成heapdump和javacore文件,文件的最大数目分别等于选项中的m和n的值,可以根据实际的需求设置合理的m和n的值。 例如: 在启动websphere之前,设置下面的环境变量: export JAVA_DUMP_OPTS="ONANYSIGNAL(JAVADUMP[5],HEAPDUMP[5])" 这样在收到相应的信号的时候,将最大生成5个heapdump和javacore,之后将不会再生成heapdump和javacore文件。 注意: 如果设置了IBM_heapdump=true变量,将会生成一个额外的heapdump文件,这样heapdump的文件将会是n+1个,在Java SDK 1.4.2 SR7中将避免这个情况。 |
|