线程转储Java SE预定应用程序卡住问题

时间:2015-01-08 15:17:34

标签: java multithreading oracle network-programming eclipselink

我在Windows服务器上运行了java SE jar文件。应用程序处理一些记录并提交数据库中的记录,并且我正在使用ORM收费eclipselink.Application计划按时间间隔运行。我面临的问题是应用程序在运行一到两天后停止并且处理停止。以下是应用程序卡住时的完整线程转储。如果有人能够阅读那个转储并帮助我。

Full thread dump Java HotSpot(TM) Client VM (23.25-b01 mixed mode, sharing):
"DestroyJavaVM" prio=6 tid=0x0095b000 nid=0x5ce8 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE
"pool-1-thread-1" prio=6 tid=0x049a4800 nid=0x5a1c runnable [0x041ae000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at oracle.net.ns.Packet.receive(Unknown Source)
        at oracle.net.ns.NSProtocol.connect(Unknown Source)
        at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:706)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:228)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:361)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:151)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:579)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:380)
        - locked <0x24306260> (a org.eclipse.persistence.sessions.server.ServerSession)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:157)
        - locked <0x24390e88> (a org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:214)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:202)
        at com.warid.bs.posttoprebalanceshare.PostToPreBalnaceShareTask.run(PostToPreBalnaceShareTask.java:50)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
        at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

"Service Thread" daemon prio=6 tid=0x01fb8400 nid=0x386c runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread0" daemon prio=10 tid=0x01fb3800 nid=0x37e4 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" daemon prio=10 tid=0x01fb2c00 nid=0x5f30 runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x01fa8000 nid=0x748 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=0x01f93800 nid=0x15b4 in Object.wait() [0x0445f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x296ccd30> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(Unknown Source)
        - locked <0x296ccd30> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(Unknown Source)
        at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

"Reference Handler" daemon prio=10 tid=0x01f92000 nid=0x296c in Object.wait() [0x042ef000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x296cc8f8> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:503)
        at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
        - locked <0x296cc8f8> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x01f90c00 nid=0x3210 runnable

"VM Periodic Task Thread" prio=10 tid=0x01fd2c00 nid=0x5d78 waiting on condition

JNI global references: 301

Heap
 def new generation   total 33984K, used 5349K [0x24170000, 0x26640000, 0x296c0000)
  eden space 30272K,   8% used [0x24170000, 0x243d0ad8, 0x25f00000)
  from space 3712K,  78% used [0x262a0000, 0x26578990, 0x26640000)
  to   space 3712K,   0% used [0x25f00000, 0x25f00000, 0x262a0000)
 tenured generation   total 75280K, used 50183K [0x296c0000, 0x2e044000, 0x34170000)
   the space 75280K,  66% used [0x296c0000, 0x2c7c1c18, 0x2c7c1e00, 0x2e044000)
 compacting perm gen  total 12288K, used 10668K [0x34170000, 0x34d70000, 0x38170000)
   the space 12288K,  86% used [0x34170000, 0x34bdb1a8, 0x34bdb200, 0x34d70000)
    ro space 10240K,  42% used [0x38170000, 0x385b4240, 0x385b4400, 0x38b70000)
    rw space 12288K,  54% used [0x38b70000, 0x391f4d58, 0x391f4e00, 0x39770000)

1 个答案:

答案 0 :(得分:1)

您的申请中没有任何内容。您的应用程序线程 pool-1-thread-1 实际上正在忙于查询您的数据库:

java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at oracle.net.ns.Packet.receive(Unknown Source)
        at oracle.net.ns.NSProtocol.connect(Unknown Source)
        at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:706)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:228)

我宁愿检查你的数据库。