【发布时间】:2011-01-19 10:28:45
【问题描述】:
我的 J2EE 应用程序运行缓慢。我们在这种情况下进行了 Thead 转储,发现以下线程在多个转储中是可运行的,并且已在某些监视器上锁定,导致其他线程(直接或间接)等待锁定。
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:891)
at java.lang.ClassLoader.loadClass(ClassLoader.java:301)
- locked [0x9747c360] (a sun.misc.Launcher$ExtClassLoader)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
- locked [0x9747c318] (a sun.misc.Launcher$AppClassLoader)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
- locked [0x9747c318] (a sun.misc.Launcher$AppClassLoader)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
.....
您能否建议哪个线程没有移动并让其他线程工作?
【问题讨论】:
-
如果您告诉 java 的版本和您使用的应用程序服务器会有所帮助。其他线程正在等待正常的类加载器锁定,但是本机方法中的特定线程如何阻塞会让我认为您可能有硬件/磁盘问题或损坏的 jar 文件。您可以在调试中启动应用程序服务器并暂停进程以查看哪个类是罪魁祸首。
-
@bestsss Java:1.5。应用服务器:WAS 7.0
-
什么时候出现减速?刚启动后还是系统运行了一段时间或随机运行后?我本人与 WAS 并不亲密,但我会检查所有与调试相关的参数是否已关闭,并且一旦部署,没有任何内容会修改您的应用程序。看起来 websphere 可能会多次重新加载您的应用程序。
-
你能显示更多的线程转储吗?
-
这正是 java 1.5,我问的原因:bugs.sun.com/bugdatabase/view_bug.do?bug_id=4942470
标签: java multithreading performance jakarta-ee classloader