This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 122931

Summary: IDE performance in general
Product: obsolete Reporter: dhamson1 <dhamson1>
Component: visualwebAssignee: _ sandipchitale <sandipchitale>
Status: RESOLVED INVALID    
Severity: blocker CC: deva, quynguyen, tmysik, wjprakash
Priority: P1 Keywords: PERFORMANCE
Version: 6.x   
Hardware: PC   
OS: Windows XP   
Issue Type: DEFECT Exception Reporter:

Description dhamson1 2007-11-28 04:04:30 UTC
We (team of 4) develop JSF pages (backward compatibility plugin used), deploy to Tomcat and call backend services to 
manage an inventory application throught WebLogic.  After the webapp builds NB6 rc2 goes away for 30sec to a minute or 
more.  Usually last entry in the build log is build completed in N sec.  But NB6 stops responding.  It runs a javaw 
process that consumes memory from 230MB to 740MB.  If Java heap errors don't occur at some point it returns.  Since 
source is written to disk, it's actually faster to kill the javaw process and restart NB6.

We've tried to determine what not to do to avoid the hangs; our latest hunch is don't use Design mode.  If you could 
fix this one problem, all the other functional shortcomings would be tolerable as it works pretty well for a drag-n-
drop, build-deploy-test ide.  I kind of like it's functionality better than Eclipse, it just needs to perform better.
Comment 1 Peter Pis 2007-12-03 15:19:14 UTC
Could you please attach the thread dump while the problem occurs? http://wiki.netbeans.org/wiki/view/GenerateThreadDump
Comment 2 Tomas Mysik 2007-12-10 10:17:39 UTC
seems to be related to visualweb, see reporter's comment
Comment 3 dhamson1 2007-12-10 15:25:40 UTC
Here's the thread dump when NetBeans goes away; getting many page faults during this time for the following thread.
5676 -- the javaw thread consuming most memory

Full thread dump Java HotSpot(TM) Client VM (1.5.0_12-b04 mixed mode):

"StackTrace Remote Thread" prio=6 tid=0x62f24e40 nid=0x1008 runnable [0x00000000..0x5f5afb70]

"Inactive RequestProcessor thread [Was:Versioning/org.netbeans.modules.versioning.system.cvss.FilesystemHandler$3]" 
daemon prio=2 tid=0x61340d88 nid=0xde4 in Object.wait() [0x6168f000..0x6168fb68]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x0cae1a08> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:939)
	- locked <0x0cae1a08> (a java.lang.Object)

"Inactive RequestProcessor thread [Was:Default RequestProcessor/org.netbeans.modules.xml.xam.AbstractModelFactory$1]" 
daemon prio=2 tid=0x5dd0e950 nid=0x14fc in Object.wait() [0x6025f000..0x6025fce8]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x0a25c010> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:939)
	- locked <0x0a25c010> (a java.lang.Object)

"Inactive RequestProcessor thread [Was:Default 
RequestProcessor/org.netbeans.spi.project.support.ant.GlobFileBuiltQuery$StatusImpl]" daemon prio=2 tid=0x60f83c60 
nid=0x102c in Object.wait() [0x5fc0f000..0x5fc0fd68]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x0a5fd778> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:939)
	- locked <0x0a5fd778> (a java.lang.Object)

"Inactive RequestProcessor thread [Was:OpenIDE-request-processor-
0/org.netbeans.core.startup.preferences.NbPreferences$1]" daemon prio=2 tid=0x5dbf0a50 nid=0x1630 in Object.wait() 
[0x5f4cf000..0x5f4cf9e8]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x0a25c020> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:939)
	- locked <0x0a25c020> (a java.lang.Object)

"pool-3-thread-1" prio=6 tid=0x62cdcaf8 nid=0x13a0 waiting on condition [0x648ef000..0x648efbe8]
	at sun.misc.Unsafe.park(Native Method)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await
(AbstractQueuedSynchronizer.java:1841)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:359)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
	at java.lang.Thread.run(Thread.java:595)

"pool-2-thread-1" prio=6 tid=0x62cdc018 nid=0x1124 waiting on condition [0x646ef000..0x646efc68]
	at sun.misc.Unsafe.park(Native Method)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await
(AbstractQueuedSynchronizer.java:1841)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:359)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
	at java.lang.Thread.run(Thread.java:595)

"pool-4-thread-1" prio=6 tid=0x60ea8da0 nid=0xd6c waiting on condition [0x644ef000..0x644efce8]
	at sun.misc.Unsafe.park(Native Method)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await
(AbstractQueuedSynchronizer.java:1841)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:359)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
	at java.lang.Thread.run(Thread.java:595)

"pool-1-thread-1" prio=6 tid=0x60ea6b80 nid=0x11ec waiting on condition [0x642ef000..0x642efd68]
	at sun.misc.Unsafe.park(Native Method)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await
(AbstractQueuedSynchronizer.java:1841)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:359)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
	at java.lang.Thread.run(Thread.java:595)

"Inactive RequestProcessor thread [Was:Versioning/org.netbeans.modules.versioning.system.cvss.FilesystemHandler$3]" 
daemon prio=2 tid=0x5dd5a638 nid=0x1d4 in Object.wait() [0x63eef000..0x63eefa68]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x04f267b8> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:939)
	- locked <0x04f267b8> (a java.lang.Object)

"Java Source Worker Thread" prio=6 tid=0x612c3928 nid=0x1684 waiting on condition [0x61e8f000..0x61e8fc68]
	at sun.misc.Unsafe.park(Native Method)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:146)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos
(AbstractQueuedSynchronizer.java:1879)
	at java.util.concurrent.PriorityBlockingQueue.poll(PriorityBlockingQueue.java:236)
	at org.netbeans.api.java.source.JavaSource$CompilationJob.run(JavaSource.java:1446)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
	at java.util.concurrent.FutureTask.run(FutureTask.java:123)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
	at java.lang.Thread.run(Thread.java:595)

"DestroyJavaVM" prio=6 tid=0x00038b80 nid=0x6c0 waiting on condition [0x00000000..0x0007fae8]

"AWT-EventQueue-1" prio=6 tid=0x6101a978 nid=0xcbc runnable [0x61a8e000..0x61a8fa68]
	at java.io.WinNTFileSystem.getLastModifiedTime(Native Method)
	at java.io.File.lastModified(File.java:795)
	at java.util.zip.ZipFile.<init>(ZipFile.java:203)
	at java.util.jar.JarFile.<init>(JarFile.java:132)
	at java.util.jar.JarFile.<init>(JarFile.java:70)
	at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:56)
	at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:41)
	at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:78)
	at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:102)
	at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:124)
	at sun.misc.URLClassPath$Loader.getResource(URLClassPath.java:494)
	at sun.misc.URLClassPath.getResource(URLClassPath.java:161)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:192)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	- locked <0x03775f40> (a org.netbeans.modules.visualweb.insync.ModelSet$ProjectClassLoader)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.beans.Introspector.instantiate(Introspector.java:1453)
	at java.beans.Introspector.findExplicitBeanInfo(Introspector.java:433)
	- locked <0x1a3676f8> (a java.lang.Class)
	at java.beans.Introspector.<init>(Introspector.java:359)
	at java.beans.Introspector.getBeanInfo(Introspector.java:159)
	at java.beans.Introspector.getBeanInfo(Introspector.java:220)
	at java.beans.Introspector.getBeanInfo(Introspector.java:188)
	at org.netbeans.modules.visualweb.insync.beans.BeansUnit.getBeanInfo(BeansUnit.java:929)
	at org.netbeans.modules.visualweb.insync.beans.BeansUnit.getBeanInfo(BeansUnit.java:953)
	at org.netbeans.modules.visualweb.insync.beans.BeansUnit.bindBean(BeansUnit.java:527)
	at org.netbeans.modules.visualweb.insync.beans.BeansUnit.bindBeans(BeansUnit.java:504)
	at org.netbeans.modules.visualweb.insync.beans.BeansUnit.bind(BeansUnit.java:273)
	at org.netbeans.modules.visualweb.insync.faces.FacesPageUnit.bind(FacesPageUnit.java:414)
	at org.netbeans.modules.visualweb.insync.beans.BeansUnit.sync(BeansUnit.java:214)
	at org.netbeans.modules.visualweb.insync.live.LiveUnit.sync(LiveUnit.java:337)
	at org.netbeans.modules.visualweb.insync.live.LiveUnitWrapper.sync(LiveUnitWrapper.java:154)
	at org.netbeans.modules.visualweb.insync.models.FacesModel.syncImpl(FacesModel.java:1075)
	- locked <0x04056c30> (a org.netbeans.modules.visualweb.insync.models.FacesModel)
	at org.netbeans.modules.visualweb.insync.Model.sync(Model.java:219)
	at org.netbeans.modules.visualweb.insync.models.FacesModel.refreshUnits(FacesModel.java:1833)
	at org.netbeans.modules.visualweb.insync.models.FacesModelSet$1$1.run(FacesModelSet.java:422)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

"TimerQueue" daemon prio=6 tid=0x6101a198 nid=0xeb0 in Object.wait() [0x6188f000..0x6188fae8]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x065be058> (a javax.swing.TimerQueue)
	at javax.swing.TimerQueue.run(TimerQueue.java:236)
	- locked <0x065be058> (a javax.swing.TimerQueue)
	at java.lang.Thread.run(Thread.java:595)

"Creator Error Handler Listener" prio=6 tid=0x5dd0eb28 nid=0x1780 runnable [0x60bcf000..0x60bcfbe8]
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
	- locked <0x05e54a28> (a java.net.SocksSocketImpl)
	at java.net.ServerSocket.implAccept(ServerSocket.java:450)
	at java.net.ServerSocket.accept(ServerSocket.java:421)
	at org.netbeans.modules.visualweb.errorhandler.DebugServerThread.run(DebugServerThread.java:115)

"*** JFluid Separate Command Execution Thread" daemon prio=6 tid=0x60e257a0 nid=0x12dc in Object.wait() 
[0x609cf000..0x609cfc68]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x064fce30> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:474)
	at org.netbeans.lib.profiler.ProfilerClient$SeparateCmdExecutionThread.run(ProfilerClient.java:104)
	- locked <0x064fce30> (a java.lang.Object)

"Thread-4" daemon prio=6 tid=0x5ea5f698 nid=0x1600 in Object.wait() [0x607cf000..0x607cfce8]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x047eacc0> (a java.util.LinkedList)
	at java.lang.Object.wait(Object.java:474)
	at java.util.prefs.AbstractPreferences$EventDispatchThread.run(AbstractPreferences.java:1456)
	- locked <0x047eacc0> (a java.util.LinkedList)

"AWT-Windows" daemon prio=6 tid=0x5dbe9758 nid=0x15a4 runnable [0x6000f000..0x6000f9e8]
	at sun.awt.windows.WToolkit.eventLoop(Native Method)
	at sun.awt.windows.WToolkit.run(WToolkit.java:269)
	at java.lang.Thread.run(Thread.java:595)

"AWT-Shutdown" prio=6 tid=0x5dbe9400 nid=0x1310 in Object.wait() [0x5fe0f000..0x5fe0fa68]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x036e0438> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:474)
	at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
	- locked <0x036e0438> (a java.lang.Object)
	at java.lang.Thread.run(Thread.java:595)

"Java2D Disposer" daemon prio=10 tid=0x5dc62900 nid=0x12f4 in Object.wait() [0x5f90f000..0x5f90fb68]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x036e0458> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
	- locked <0x036e0458> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
	at sun.java2d.Disposer.run(Disposer.java:125)
	at java.lang.Thread.run(Thread.java:595)

"Timer-0" daemon prio=6 tid=0x5ea00048 nid=0xe10 in Object.wait() [0x5f24f000..0x5f24fce8]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x038d6e80> (a java.util.TaskQueue)
	at java.util.TimerThread.mainLoop(Timer.java:509)
	- locked <0x038d6e80> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:462)

"CLI Requests Server" daemon prio=6 tid=0x5dc0f430 nid=0x15c8 runnable [0x5f04f000..0x5f04fd68]
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
	- locked <0x03833b40> (a java.net.SocksSocketImpl)
	at java.net.ServerSocket.implAccept(ServerSocket.java:450)
	at java.net.ServerSocket.accept(ServerSocket.java:421)
	at org.netbeans.CLIHandler$Server.run(CLIHandler.java:1003)

"Active Reference Queue Daemon" daemon prio=2 tid=0x5dc0eb80 nid=0x14f8 in Object.wait() [0x5e9af000..0x5e9af9e8]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x037c5528> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
	- locked <0x037c5528> (a java.lang.ref.ReferenceQueue$Lock)
	at org.openide.util.Utilities$ActiveQueue.run(Utilities.java:3056)
	at java.lang.Thread.run(Thread.java:595)

"Low Memory Detector" daemon prio=6 tid=0x5dbb55c0 nid=0x146c runnable [0x00000000..0x00000000]

"CompilerThread0" daemon prio=10 tid=0x5dbb42b8 nid=0x22c waiting on condition [0x00000000..0x5e3af848]

"Signal Dispatcher" daemon prio=10 tid=0x5dbb3488 nid=0x154c runnable [0x00000000..0x00000000]

"Surrogate Locker Thread (CMS)" daemon prio=6 tid=0x00acfa40 nid=0x1668 waiting on condition [0x00000000..0x5dfafe08]

"Finalizer" daemon prio=8 tid=0x00ac97a8 nid=0x1058 in Object.wait() [0x5dbaf000..0x5dbafce8]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x0390ea30> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
	- locked <0x0390ea30> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x00ac8338 nid=0xb88 in Object.wait() [0x5d9af000..0x5d9afd68]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x036e0488> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:474)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
	- locked <0x036e0488> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x00ac5900 nid=0x1460 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=10 tid=0x00a498b8 nid=0x1168 runnable 

"Gang worker#1 (Parallel GC Threads)" prio=10 tid=0x00a49ef8 nid=0x1e0 runnable 

"Concurrent Mark-Sweep GC Thread#0" prio=10 tid=0x00a408e0 nid=0x1474 runnable 

"VM Periodic Task Thread" prio=10 tid=0x5dbb6948 nid=0xc38 waiting on condition 

Comment 4 _ krystyna 2007-12-10 23:20:17 UTC
I am assuming with fresh comments posted today, that this bug was meant to 
be re-opened. If this is incorrect, would the submitter excplicitly 
state so. Assigning to insync.
Comment 5 _ sandipchitale 2007-12-10 23:50:04 UTC
This situation occurs because after a successful compilation all the pages that are open or were opened before are
synced. The status bar shows the message Refreshing Models. This is similar to the the delay experience when opening a
project which had lot of pages open when it was closed last. We are looking into performance issues for 6.1.
Comment 6 dhamson1 2007-12-11 15:22:03 UTC
Our development experience is that delays as great as 90sec occur independent of the files/pages loaded or open.  Some 
wait times were in excess of 15min.  Memory consumption is about .6GB with page faults sometimes at 4600, if this 
helps with the problem.  I changed the status from FIXED for fear this issue would not be resolved as it's our number 
one concern with the IDE.
Comment 7 Quy Nguyen 2007-12-12 19:28:12 UTC
The wait time for the sync should be dependent on the number of pages that have been previously opened.  This may be
related to Issue 123534 since opening the page flow editor loads all pages in the project.

I also noticed that the wait time is dependent on the number/complexity of the currently opened pages as well.  Testing
with projects that have blank pages and "loaded" pages (with 20 table components per page), here are some results for
the 'refresh models' action:

131 blank page project (5 pages open) - 5 seconds
5 blank page project (5 pages open) - 3.5 seconds
131 loaded page project (5 pages open) - 32 seconds
131 loaded page project (1 page opened, 4 previously opened) - 12 seconds
Comment 8 _ sandipchitale 2007-12-12 22:13:34 UTC
dhamson1 , will it possible for you to attach the project? We would like to relly look at the 15 min delay scenario. We
have not experienced that.
Comment 9 dhamson1 2007-12-13 14:37:22 UTC
Our project is attached w/ complibs.  Rebuilding with no pages loaded did take 11sec; loading all pages took 268sec 
and rebuilding w/ debug thereafter took about 30+sec.  Didn't see any links to upload my zip files; so I'm expecting 
to be able to do that after Submit.

To be useable NetBeans needs to be responsive to all user actions including process interruptions.

Don
Comment 10 dhamson1 2007-12-13 14:46:31 UTC
Disregard my next post, our project is 80MB zipped; your upload capacity is 1MB.
Comment 11 _ sandipchitale 2007-12-13 17:56:55 UTC
dhamson1,

Please use sun file transfer service to upload the project. You can go to 
https://supportfiles.sun.com/upload - use default destination "cores".
With an account on our side we can retrieve.

After you have done so please add a comment here.

Comment 12 _ sandipchitale 2007-12-13 18:00:19 UTC
*** Issue 123924 has been marked as a duplicate of this issue. ***
Comment 13 dhamson1 2007-12-18 21:13:22 UTC
Our project has been uploaded as indicated here:

Your file has been stored as "/cores/NSIP_DNS.zip" on the Supportfiles service. 
Your file has been stored as "/cores/NSIP_DNS_complibs.zip" on the Supportfiles service. 

I'm sure after looking at internals; you'll notice a process taking an unusual amount of time.
Thanks!
Don


Comment 14 Quy Nguyen 2008-01-04 01:27:14 UTC
Sorry for the hassle, but could you re-upload the project files again?  They were removed from the server before anyone
could take a look at them.
Comment 15 _ sandipchitale 2008-01-14 20:29:29 UTC
Please reopen the issue after uploading the file.

We have not seen an occurrence of 15min delay case. We need to get the specific project to see what is going on.

In the mean time

1. There have been other bug fixes in trunk such as Page flow editor not loading all pages when opened.

issue # 123534

2. There have been other performance improvements that may help also.