将我们的应用程序(Mindalign)从jdk 1.4升级到jdk 1.6之后,发现JVM经常被挂起几秒钟。
观察:
在启动期间,Application会执行大量I / O操作(即加载xml文件,将数据发送到Tcp / Ip套接字) 在这些操作期间可以观察到约2秒的间隙。
以下是问题期间的示例日志。
使用JDK1.4编译
DEBUG 14Jan30 16:33:42108 digester.xml.AbstractDigestBinder/shutdown | loading configuration:
DEBUG 14Jan30 16:33:42218 gs.group_server.GroupServer/shutdown | Maximum exception occurred within the timespan is set to 0
INFO 14Jan30 16:33:53153 rr.net.ConnectionManager/MessageHandler | [IRC] << :groupserver. RPLWHOREG
INFO 14Jan30 16:33:53153 rr.net.ConnectionManager/MessageHandler | [IRC] << :groupserver. RPLWHOREG
Compiled with JDK1.6
DEBUG 14Feb05 14:22:45801 digester.xml.AbstractDigestBinder/shutdown | loading configuration:
DEBUG 14Feb05 14:22:47205 gs.group_server.GroupServer/shutdown | Maximum exception occurred within the timespan is set to 0
DEBUG 14Feb05 14:22:54599 rr.net.ConnectionManager/MessageHandler | [IRC] << :groupserver. RPLWHOREG
DEBUG 14Feb05 14:22:56502 rr.net.ConnectionManager/MessageHandler | [IRC] << :groupserver. RPLWHOREG
请建议我,如何解决此问题。 强文
它可以与java的xms值(堆大小)相关吗??
答案 0 :(得分:0)
使用分析器和/或VisualVM查看应用程序正在执行的操作。
打开垃圾收集调试,看看是否有任何事情发生。
使用调试器在其中一个停顿期间“暂停”应用程序,然后调查以查看它正在做什么或等待什么。
我实际上并没有看到两个时间的巨大差异:
:42到:53是:11差异,在第二种情况下:47到:54是:07差异。它实际上变得更快......这可以预期,因为1.6 JVM比1.4更智能。