JVM在java 6中被绞死了几秒钟

时间:2014-02-11 08:59:25

标签: java

将我们的应用程序(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值(堆大小)相关吗??

1 个答案:

答案 0 :(得分:0)

使用分析器和/或VisualVM查看应用程序正在执行的操作。

打开垃圾收集调试,看看是否有任何事情发生。

使用调试器在其中一个停顿期间“暂停”应用程序,然后调查以查看它正在做什么或等待什么。

我实际上并没有看到两个时间的巨大差异:

:42到:53是:11差异,在第二种情况下:47到:54是:07差异。它实际上变得更快......这可以预期,因为1.6 JVM比1.4更智能。