我有一个使用嵌入式Jetty(版本9.3.6.v20151106)和JDK 8u65的应用程序。JVM卡住试图获取信号量
当我使用Mac或Linux操作系统这个应用程序,我没有任何困难。但是,在Windows上,Jetty无法启动并且应用程序永久挂起。
我对过程跑jstack命令并分离,其阻碍了服务器的启动该线程。
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x1a3b2018> (a java.util.concurrent.Semaphore$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
at java.util.concurrent.Semaphore.acquire(Semaphore.java:312)
at org.eclipse.jetty.annotations.AnnotationConfiguration.scanForAnnotations(AnnotationConfiguration.java:540)
at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:447)
at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:491)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1336)
我寻找另一个线程拿着锁,但没有。
如何进一步调试此问题?它是JVM错误还是Windows安全功能?任何帮助非常感谢。
我尝试使用单个Java程序进行重现,但其行为方式不同。我也可以看到Windows返回的核心数是正确的。 –