有没有办法来检测Java进程内存不足(如PermGen空间),并重新启动与SMF合同?
取决于你的Java虚拟机。 我正在使用热点虚拟机,你可以做以下事情。
使用-XX:OnOutOfMemoryError = java cli选项将SIGKILL信号发送到进程,这将导致SMF再次启动,因为OutOfMemory java进程不响应任何信号,所以需要SIGKILL。 您可以添加一个-XX:-HeapDumpOnOutOfMemoryError选项来获得堆的转储分析,但这可能占用大量的空间。
文档: http : //www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html