Thead Dump Java SE scheduled Application stuck 问题

Thead Dump Java SE scheduled Application stuck issue

我有 java SE jar 文件在 windows 服务器上运行。应用程序处理一些记录并提交数据库中的记录,为此我正在使用 ORM 收费 eclipselink.Application 计划按时间间隔运行。我面临的问题是应用程序在运行一两天后卡住,处理是 stopped.Following 是应用程序卡住时的完整线程转储。如果有人可以阅读该转储并帮助我。

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.access1(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)

您的应用程序没有卡住。您的应用程序线程 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)

我宁愿检查你的数据库。