Java进程在OutOfMemoryException之后没有死亡

Java进程在OutOfMemoryException之后没有死亡,java,garbage-collection,jvm,out-of-memory,Java,Garbage Collection,Jvm,Out Of Memory,我正在测试一个应用程序,我的应用程序抛出了OutOfMemory异常,但正如我从ProcessExplorer中看到的,该进程仍然处于活动状态。我以为它只是活着,在OOM之后什么也没做,但过了一段时间我仍然看到一些应用活动。我有点惊讶。为什么会发生这种情况 java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid8920.hprof ... Heap dump file created [2826469039 byt

我正在测试一个应用程序,我的应用程序抛出了OutOfMemory异常,但正如我从ProcessExplorer中看到的,该进程仍然处于活动状态。我以为它只是活着,在OOM之后什么也没做,但过了一段时间我仍然看到一些应用活动。我有点惊讶。为什么会发生这种情况

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid8920.hprof ...
Heap dump file created [2826469039 bytes in 59.888 secs]
Exception in thread "ActiveMQ Transport: tcp://localhost/127.0.0.1:61000@53335"
java.lang.OutOfMemoryError: Java heap space
我使用的JVM选项有:

-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+PrintGCDetails -verbose:gc -Xloggc:C:/temp/GCVerbose.log
它是一个64位Java 1.7

编辑:::

在OOM异常之后,我看到了更多与应用程序相关的日志消息,我认为应用程序仍在做一些事情。但几分钟后,我看到最后一个异常堆栈,如下所示,应用程序活动停止。但这个过程仍然存在

Exception in thread "pool-3-thread-1" java.lang.OutOfMemoryError: Java heap space
Exception in thread "ActiveMQ Session Task-13" java.lang.OutOfMemoryError: Java heap space
Feb 17, 2013 4:54:44 PM sun.rmi.transport.tcp.TCPTransport$AcceptLoop executeAcceptLoop
WARNING: RMI TCP Accept-0: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=53490] throws
java.lang.OutOfMemoryError: Java heap space
    at java.net.NetworkInterface.getAll(Native Method)
    at java.net.NetworkInterface.getNetworkInterfaces(NetworkInterface.java:326)
    at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:86)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:359)
    at java.lang.Thread.run(Thread.java:722)

Feb 17, 2013 4:57:34 PM ServerCommunicatorAdmin reqIncoming
WARNING: The server has decided to close this client connection.
Exception in thread "ActiveMQ InactivityMonitor Worker" java.lang.OutOfMemoryError: Java heap space
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

请尝试
kill-3
打印Java线程转储并查看应用程序挂起的位置。

您使用的是子进程还是线程?是的,此应用程序启动客户端和服务器,它们通过ActiveMQ上创建的队列发送消息。我必须杀死该应用程序,并尝试重新生成。但我认为一旦抛出OOM,无论发生什么情况,应用程序都需要一直被终止。是吗?不,它可能会自动崩溃。但是,如果它仍然处于活动状态,则始终可以收集线程转储。此外,如果要分析OOM的原因,可以执行
-XX:OnOutOfMemoryError=“;
-XX:-HeapDumpOnOutOfMemoryError