Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6929021

Performance problem with DeployCacheHandler

XMLWordPrintable

    • 6
    • b01
    • x86
    • windows_xp

        Find a ugly performance problem with DeployCacheHandler in an applet
        and might in web start. The problem is that the DeployCacheHandler create a socket
        and read the HTTP headers in a synchronized. This means in the time of creating
        the socket and waiting on the server header response, no other thread can request
        a cache resource. See the stacktrace below for details.

        In a time where computer and network have a large speed but the latency of internet
        connection is large, this is fatal. In our sample (see stacktrace) the loading
        of the splash screen is blocking the loading of the application.

        Java Plug-in 1.6.0_17

        Verwendung der JRE-Version 1.6.0_17-b04 Java HotSpot(TM) Client VM

        Home-Verzeichnis des Benutzers = C:\Dokumente und Einstellungen\rudolfh

         

        ----------------------------------------------------

        c:?? Konsole löschen

        f:?? Objekte in Finalisierungswarteschlange finalisieren

        g:?? Speicherbereinigung

        h:?? Diese Hilfemeldung anzeigen

        l:?? ClassLoader-Liste ausgeben

        m:?? Speicherbelegung anzeigen

        o:?? Protokollierung auslösen

        q:?? Konsole ausblenden

        r:?? Richtlinien-Konfiguration neu laden

        s:?? System- und Bereitstellungseigenschaften ausgeben

        t:?? Threadliste ausgeben

        v:?? Thread-Stack ausgeben

        x:?? ClassLoader-Cache löschen

        0-5: Trace-Stufe auf <n> setzen

        ----------------------------------------------------

         

        Thread-Stack ausgeben...

        ----------------------------------------------------

        2010-02-22 11:07:44

        Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode, sharing):

         

        "clientThreads" prio=4 tid=0x032ac800 nid=0x6dc in Object.wait() [0x04d7f000]

        ?? java.lang.Thread.State: WAITING (on object monitor)

        ??????? at java.lang.Object.wait(Native Method)

        ??????? - waiting on <0x1f54c4a0> (a com.inet.helpdesk.util.ThreadPool)

        ??????? at java.lang.Object.wait(Object.java:485)

        ??????? at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)

        ??????? - locked <0x1f54c4a0> (a com.inet.helpdesk.util.ThreadPool)

        ??????? at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)

        ??????? at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

         

        "clientThreads" prio=4 tid=0x04731800 nid=0x1b0 waiting for monitor entry [0x04d2d000]

        ?? java.lang.Thread.State: BLOCKED (on object monitor)

        ??????? at com.sun.deploy.cache.DeployCacheHandler.put(Unknown Source)

        ??????? - waiting to lock <0x1f3e5d80> (a com.sun.deploy.cache.DeployCacheHandler)

        ??????? at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)

        ??????? - locked <0x1f599e58> (a sun.net.www.protocol.http.HttpURLConnection)

        ??????? at sun.plugin.PluginURLJarFileCallBack.downloadJAR(Unknown Source)

        ??????? at sun.plugin.PluginURLJarFileCallBack.access$000(Unknown Source)

        ??????? at sun.plugin.PluginURLJarFileCallBack$2.run(Unknown Source)

        ??????? at java.security.AccessController.doPrivileged(Native Method)

        ??????? at sun.plugin.PluginURLJarFileCallBack.retrieve(Unknown Source)

        ??????? at sun.net.www.protocol.jar.URLJarFile.retrieve(Unknown Source)

        ??????? at sun.net.www.protocol.jar.URLJarFile.getJarFile(Unknown Source)

        ??????? at sun.net.www.protocol.jar.JarFileFactory.get(Unknown Source)

        ??????? at sun.net.www.protocol.jar.JarURLConnection.connect(Unknown Source)

        ??????? at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(Unknown Source)

        ??????? at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFileInternal(Unknown Source)

        ??????? - locked <0x1f59bfd8> (a sun.plugin.net.protocol.jar.CachedJarURLConnection)

        ??????? at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source)

        ??????? - locked <0x1f59bfd8> (a sun.plugin.net.protocol.jar.CachedJarURLConnection)

        ??????? at com.inet.helpdesk.loader.AsynURLClassLoader.getJarFile(AsynURLClassLoader.java:223)

        ??????? - locked <0x1f59c080> (a java.net.URL)

        ??????? at com.inet.helpdesk.loader.AsynURLClassLoader.findClass(AsynURLClassLoader.java:125)

        ??????? at java.lang.ClassLoader.loadClass(Unknown Source)

        ??????? - locked <0x1f4d9268> (a com.inet.helpdesk.loader.AsynURLClassLoader)

        ??????? at java.lang.ClassLoader.loadClass(Unknown Source)

        ??????? at java.lang.ClassLoader.loadClassInternal(Unknown Source)

        ??????? - locked <0x1f4d9268> (a com.inet.helpdesk.loader.AsynURLClassLoader)

        ??????? at java.lang.ClassLoader.defineClass1(Native Method)

        ??????? at java.lang.ClassLoader.defineClass(Unknown Source)

        ??????? at java.security.SecureClassLoader.defineClass(Unknown Source)

        ??????? at com.inet.helpdesk.loader.AsynURLClassLoader.defineClass(AsynURLClassLoader.java:252)

        ??????? at com.inet.helpdesk.loader.AsynURLClassLoader.findClass(AsynURLClassLoader.java:130)

        ??????? at java.lang.ClassLoader.loadClass(Unknown Source)

        ??????? - locked <0x1f4d9268> (a com.inet.helpdesk.loader.AsynURLClassLoader)

        ??????? at java.lang.ClassLoader.loadClass(Unknown Source)

        ??????? at java.lang.ClassLoader.loadClassInternal(Unknown Source)

        ??????? - locked <0x1f4d9268> (a com.inet.helpdesk.loader.AsynURLClassLoader)

        ??????? at inet.HelpDeskClient.loadDialogSettings(HelpDeskClient.java:1584)

        ??????? at com.inet.helpdesk.loader.JobHandler.executeJob(JobHandler.java:133)

        ??????? at com.inet.helpdesk.loader.JobHandler.run(JobHandler.java:97)

        ??????? at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:66)

         

        "clientThreads" prio=4 tid=0x03279c00 nid=0x84 in Object.wait() [0x04cdf000]

        ?? java.lang.Thread.State: WAITING (on object monitor)

        ??????? at java.lang.Object.wait(Native Method)

        ??????? - waiting on <0x1f54c4a0> (a com.inet.helpdesk.util.ThreadPool)

        ??????? at java.lang.Object.wait(Object.java:485)

        ??????? at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)

        ??????? - locked <0x1f54c4a0> (a com.inet.helpdesk.util.ThreadPool)

        ??????? at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)

        ??????? at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

         

        "clientThreads" prio=4 tid=0x047aa400 nid=0xb5c waiting for monitor entry [0x04c8f000]

        ?? java.lang.Thread.State: BLOCKED (on object monitor)

        ??????? at inet.HelpDeskClient.loadUserData(HelpDeskClient.java:2077)

        ??????? at inet.HelpDeskClient.setClientUserName(HelpDeskClient.java:2212)

        ??????? at com.inet.helpdesk.loader.JobHandler.loadServerProperteySettings(JobHandler.java:218)

        ??????? at com.inet.helpdesk.loader.JobHandler.executeJob(JobHandler.java:110)

        ??????? at com.inet.helpdesk.loader.JobHandler.run(JobHandler.java:97)

        ??????? at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:66)

         

        "Konnekter Ping" daemon prio=4 tid=0x04725400 nid=0xed8 in Object.wait() [0x045bf000]

        ?? java.lang.Thread.State: TIMED_WAITING (on object monitor)

        ??????? at java.lang.Object.wait(Native Method)

        ??????? - waiting on <0x1f558720> (a java.util.Vector)

        ??????? at com.inet.jj.cli.a.run(Unknown Source)

        ??????? - locked <0x1f558720> (a java.util.Vector)

        ??????? at java.lang.Thread.run(Unknown Source)

         

        "clientThreads" prio=4 tid=0x04742400 nid=0xf14 in Object.wait() [0x04c3f000]

        ?? java.lang.Thread.State: WAITING (on object monitor)

        ??????? at java.lang.Object.wait(Native Method)

        ??????? - waiting on <0x1f54c4a0> (a com.inet.helpdesk.util.ThreadPool)

        ??????? at java.lang.Object.wait(Object.java:485)

        ??????? at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)

        ??????? - locked <0x1f54c4a0> (a com.inet.helpdesk.util.ThreadPool)

        ??????? at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)

        ??????? at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

         

        "Image Loader" daemon prio=4 tid=0x032c7400 nid=0x7b4 runnable [0x04bef000]

        ?? java.lang.Thread.State: RUNNABLE

        ??????? at java.net.SocketInputStream.socketRead0(Native Method)

        ??????? at java.net.SocketInputStream.read(Unknown Source)

        ??????? at java.io.BufferedInputStream.fill(Unknown Source)

        ??????? at java.io.BufferedInputStream.read1(Unknown Source)

        ??????? at java.io.BufferedInputStream.read(Unknown Source)

        ??????? - locked <0x1f5f6600> (a java.io.BufferedInputStream)

        ??????? at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)

        ??????? at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)

        ??????? at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)

        ??????? - locked <0x1f5f66a0> (a sun.net.www.protocol.http.HttpURLConnection)

        ??????? at com.sun.deploy.net.HttpUtils.followRedirects(Unknown Source)

        ??????? at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)

        ??????? at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)

        ??????? at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source)

        ??????? at com.sun.deploy.cache.DeployCacheHandler.get(Unknown Source)

        ??????? - locked <0x1f3e5d80> (a com.sun.deploy.cache.DeployCacheHandler)

        ??????? at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)

        ??????? at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)

        ??????? at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)

        ??????? - locked <0x1f549060> (a sun.net.www.protocol.http.HttpURLConnection)

        ??????? at java.net.URL.openStream(Unknown Source)

        ??????? at com.inet.helpdesk.plugin.LazyIcon.loadSynchron(LazyIcon.java:96)

        ??????? at com.inet.helpdesk.plugin.LazyIcon.access$000(LazyIcon.java:34)

        ??????? at com.inet.helpdesk.plugin.LazyIcon$2.run(LazyIcon.java:84)

        ??????? at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

        ??????? at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

        ??????? at java.lang.Thread.run(Unknown Source)

         

        "clientThreads" prio=4 tid=0x047a1400 nid=0x984 waiting for monitor entry [0x04b9f000]

        ?? java.lang.Thread.State: BLOCKED (on object monitor)

        ??????? at com.inet.helpdesk.loader.JobHandler.executeJob(JobHandler.java:136)

        ??????? at com.inet.helpdesk.loader.JobHandler.run(JobHandler.java:97)

        ??????? at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:66)

         

        "clientThreads" prio=4 tid=0x0334f400 nid=0xeb0 in Object.wait() [0x04b4f000]

        ?? java.lang.Thread.State: WAITING (on object monitor)

        ??????? at java.lang.Object.wait(Native Method)

        ??????? - waiting on <0x1f54c4a0> (a com.inet.helpdesk.util.ThreadPool)

        ??????? at java.lang.Object.wait(Object.java:485)

        ??????? at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)

        ??????? - locked <0x1f54c4a0> (a com.inet.helpdesk.util.ThreadPool)

        ??????? at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)

        ??????? at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

         

        "Thread-12" prio=4 tid=0x03266400 nid=0xf90 waiting for monitor entry [0x042bf000]

        ?? java.lang.Thread.State: BLOCKED (on object monitor)

        ??????? at com.sun.deploy.cache.DeployCacheHandler.put(Unknown Source)

        ??????? - waiting to lock <0x1f3e5d80> (a com.sun.deploy.cache.DeployCacheHandler)

        ??????? at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)

        ??????? - locked <0x1f50e4d8> (a sun.net.www.protocol.http.HttpURLConnection)

        ??????? at sun.plugin.PluginURLJarFileCallBack.downloadJAR(Unknown Source)

        ??????? at sun.plugin.PluginURLJarFileCallBack.access$000(Unknown Source)

        ??????? at sun.plugin.PluginURLJarFileCallBack$2.run(Unknown Source)

        ??????? at java.security.AccessController.doPrivileged(Native Method)

        ??????? at sun.plugin.PluginURLJarFileCallBack.retrieve(Unknown Source)

        ??????? at sun.net.www.protocol.jar.URLJarFile.retrieve(Unknown Source)

        ??????? at sun.net.www.protocol.jar.URLJarFile.getJarFile(Unknown Source)

        ??????? at sun.net.www.protocol.jar.JarFileFactory.get(Unknown Source)

        ??????? at sun.net.www.protocol.jar.JarURLConnection.connect(Unknown Source)

        ??????? at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(Unknown Source)

        ??????? at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFileInternal(Unknown Source)

        ??????? - locked <0x1f510640> (a sun.plugin.net.protocol.jar.CachedJarURLConnection)

        ??????? at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source)

        ??????? - locked <0x1f510640> (a sun.plugin.net.protocol.jar.CachedJarURLConnection)

        ??????? at com.inet.helpdesk.loader.AsynURLClassLoader.getJarFile(AsynURLClassLoader.java:223)

        ??????? - locked <0x1f5106e8> (a java.net.URL)

        ??????? at com.inet.helpdesk.loader.AsynURLClassLoader.access$100(AsynURLClassLoader.java:32)

        ??????? at com.inet.helpdesk.loader.AsynURLClassLoader$BackgroundLoader.run(AsynURLClassLoader.java:376)

        ??????? at java.lang.Thread.run(Unknown Source)

         

        "TimerQueue" daemon prio=4

        Trace message truncated for length over 10K

              igor Igor Nekrestyanov (Inactive)
              tyao Ting-Yun Ingrid Yao (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: