JDK-8076555 : java webstart application viewer extremely slow
  • Type: Bug
  • Component: deploy
  • Sub-Component: webstart
  • Affected Version: 8u40
  • Priority: P4
  • Status: Resolved
  • Resolution: Duplicate
  • OS: linux
  • CPU: x86_64
  • Submitted: 2015-03-13
  • Updated: 2015-07-20
  • Resolved: 2015-05-28
Related Reports
Duplicate :  
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.


Comments
dosn't matter that you can't log in - problem can be shown just by starting the app (getting to the login screen) problem no longer exists in 8u60 - after starting the app - the cache viewer comes up quickly. This is a duplicate of JDK-8079223
28-05-2015

The application referred by the submitter is a stock exchange application that requires a user login, so unable to test completely. plan: Need to check for another application matching the criteria.
02-04-2015