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

java webstart application viewer extremely slow

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Duplicate
    • Affects Version/s: 8u40
    • Fix Version/s: None
    • Component/s: deploy
    • Labels:
    • Subcomponent:
    • CPU:
      x86_64
    • OS:
      linux

      Description

      FULL PRODUCT VERSION :
      java version "1.8.0_40"
      Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
      Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)


      ADDITIONAL OS VERSION INFORMATION :
      Linux CHI-RENGELS-01 3.13.0-47-lowlatency #78-Ubuntu SMP PREEMPT Tue Mar 3 17:53:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

      A DESCRIPTION OF THE PROBLEM :
      After downloading a single large application (> 200 MB), the application viewer is so slow it is unusable. It takes minutes to display the initial table, and minutes to switch between the 'applications' and 'resources' tab.

      You can run/download a similar app:

      https://www.theice.com/launch

      and see similar behavior (although it is not quite as slow, I believe since it is only 50 MB and have halve as many jars.




      ADDITIONAL REGRESSION INFORMATION:
      I get similar behavior with 1.7.0_67

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Install a large JNLP webstart application. Use javws -viewer.

      ACTUAL -
      You can see in the stack-trace that during table display it is continually re-writing all of the jars in saveUpgrade(), called by readIndexFile().

      This happens EVERY load, and screen switch. Clearly something is not being marked/saved correctly, and it is continually saving...

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      I did a stack-dump, and the AWT is busy doing:

      "AWT-EventQueue-1" #25 prio=6 os_prio=0 tid=0x00007f99b4221000 nid=0xa71 runnable [0x00007f99a89c4000]
         java.lang.Thread.State: RUNNABLE
      at java.util.zip.Deflater.deflateBytes(Native Method)
      at java.util.zip.Deflater.deflate(Deflater.java:442)
      - locked <0x000000079d2fecf8> (a java.util.zip.ZStreamRef)
      at java.util.zip.Deflater.deflate(Deflater.java:364)
      at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:251)
      at java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:211)
      at java.util.zip.GZIPOutputStream.write(GZIPOutputStream.java:145)
      - locked <0x000000079d2fec68> (a java.util.zip.GZIPOutputStream)
      at java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:188)
      at java.io.DataOutputStream.writeBytes(DataOutputStream.java:276)
      at java.util.jar.Manifest.write(Manifest.java:163)
      at com.sun.deploy.cache.CachedManifest.writeCompressed(Unknown Source)
      at com.sun.deploy.cache.CachedManifest.writeFull(Unknown Source)
      at com.sun.deploy.cache.CacheEntry.processJar(Unknown Source)
      at com.sun.deploy.cache.CacheEntry.access$2200(Unknown Source)
      at com.sun.deploy.cache.CacheEntry$10.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sun.deploy.cache.CacheEntry.writeFileToDisk(Unknown Source)
      - locked <0x000000077cd14c18> (a com.sun.deploy.cache.CacheEntry)
      at com.sun.deploy.cache.CacheEntry.saveUpgrade(Unknown Source)
      at com.sun.deploy.cache.CacheEntry.readIndexFile(Unknown Source)
      at com.sun.deploy.cache.CacheEntry.access$600(Unknown Source)
      at com.sun.deploy.cache.CacheEntry$3.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sun.deploy.cache.CacheEntry.<init>(Unknown Source)
      at com.sun.deploy.cache.CacheEntry.<init>(Unknown Source)
      at com.sun.deploy.cache.Cache.getCacheEntryFromIdxFiles(Unknown Source)
      at com.sun.deploy.cache.Cache.getCacheEntry(Unknown Source)
      at com.sun.deploy.cache.Cache.getCacheEntry(Unknown Source)
      at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
      at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
      at com.sun.deploy.model.ResourceProvider.getCachedResource(Unknown Source)
      at com.sun.javaws.LaunchDownload.getCachedSize(Unknown Source)
      at com.sun.javaws.ui.CacheObject.getResourceSize(Unknown Source)
      at com.sun.javaws.ui.CacheObject.getSize(Unknown Source)
      at com.sun.javaws.ui.CacheObject.getSizeLabel(Unknown Source)
      at com.sun.javaws.ui.CacheObject.getObject(Unknown Source)
      at com.sun.javaws.ui.CacheTable$CacheTableModel.getValueAt(Unknown Source)
      at javax.swing.JTable.getValueAt(JTable.java:2717)
      at javax.swing.JTable.prepareRenderer(JTable.java:5706)
      at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:683)
      at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:580)
      at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:364)
      at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:275)
      at javax.swing.JComponent.paintComponent(JComponent.java:780)
      at javax.swing.JComponent.paint(JComponent.java:1056)
      at javax.swing.JComponent.paintChildren(JComponent.java:889)
      - locked <0x00000006c5c03880> (a java.awt.Component$AWTTreeLock)
      at javax.swing.JComponent.paint(JComponent.java:1065)
      at javax.swing.JViewport.paint(JViewport.java:728)
      at javax.swing.JComponent.paintChildren(JComponent.java:889)
      - locked <0x00000006c5c03880> (a java.awt.Component$AWTTreeLock)
      at javax.swing.JComponent.paint(JComponent.java:1065)
      at javax.swing.JComponent.paintChildren(JComponent.java:889)
      - locked <0x00000006c5c03880> (a java.awt.Component$AWTTreeLock)
      at javax.swing.JComponent.paint(JComponent.java:1065)
      at javax.swing.JComponent.paintChildren(JComponent.java:889)
      - locked <0x00000006c5c03880> (a java.awt.Component$AWTTreeLock)
      at javax.swing.JComponent.paint(JComponent.java:1065)
      at javax.swing.JComponent.paintChildren(JComponent.java:889)
      - locked <0x00000006c5c03880> (a java.awt.Component$AWTTreeLock)
      at javax.swing.JComponent.paint(JComponent.java:1065)
      at javax.swing.JComponent.paintChildren(JComponent.java:889)
      - locked <0x00000006c5c03880> (a java.awt.Component$AWTTreeLock)
      at javax.swing.JComponent.paint(JComponent.java:1065)
      at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
      at javax.swing.JComponent.paintChildren(JComponent.java:889)
      - locked <0x00000006c5c03880> (a java.awt.Component$AWTTreeLock)
      at javax.swing.JComponent.paintToOffscreen(JComponent.java:5226)
      at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:290)
      at javax.swing.RepaintManager.paint(RepaintManager.java:1265)
      at javax.swing.JComponent.paint(JComponent.java:1042)
      at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
      at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
      at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
      at java.awt.Container.paint(Container.java:1973)
      at java.awt.Window.paint(Window.java:3912)
      at javax.swing.RepaintManager$4.run(RepaintManager.java:835)
      at javax.swing.RepaintManager$4.run(RepaintManager.java:807)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:807)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:782)
      at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:731)
      at javax.swing.RepaintManager.access$1300(RepaintManager.java:64)
      at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1720)
      at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
      at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
      at java.awt.EventQueue.access$500(EventQueue.java:97)
      at java.awt.EventQueue$3.run(EventQueue.java:702)
      at java.awt.EventQueue$3.run(EventQueue.java:696)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
      at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
      at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
      at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
      at java.awt.Dialog.show(Dialog.java:1084)
      at java.awt.Component.show(Component.java:1654)
      at java.awt.Component.setVisible(Component.java:1606)
      at java.awt.Window.setVisible(Window.java:1014)
      at java.awt.Dialog.setVisible(Dialog.java:1005)
      at com.sun.javaws.ui.CacheViewer.showCacheViewer(Unknown Source)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:497)
      at com.sun.deploy.panel.GeneralPanel.viewBtnAction(Unknown Source)
      at com.sun.deploy.panel.ControlPanel$8.run(Unknown Source)
      at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
      at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
      at java.awt.EventQueue.access$500(EventQueue.java:97)
      at java.awt.EventQueue$3.run(EventQueue.java:702)
      at java.awt.EventQueue$3.run(EventQueue.java:696)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)




      REPRODUCIBILITY :
      This bug can be reproduced always.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                vsaiprasad Vikas Saiprasad
                Reporter:
                webbuggrp Webbug Group
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: