[ 
https://issues.apache.org/jira/browse/NETBEANS-2291?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16862612#comment-16862612
 ] 

Shevek commented on NETBEANS-2291:
----------------------------------

The two threads that were very active when I was watching on that last 
`restart` trace was RepositoryUpdater.worker - which doesn't seem to appear in 
the profile results and Refresh-After-WindowActivated. Did RepositoryUpdater 
get renamed? Looked like this when it was running:

"RepositoryUpdater.worker" #26 daemon prio=1 os_prio=0 tid=0x00007ff0e43c7800 
nid=0x26a1 runnable [0x00007ff144bf9000]
   java.lang.Thread.State: RUNNABLE
        at java.lang.System.identityHashCode(Native Method)
        at com.sun.tools.javac.util.IntHashTable.hash(IntHashTable.java:78)
        at com.sun.tools.javac.util.IntHashTable.lookup(IntHashTable.java:113)
        at 
com.sun.tools.javac.parser.JavacParser$SimpleEndPosTable.storeEnd(JavacParser.java:4686)
        at 
com.sun.tools.javac.parser.JavacParser$SimpleEndPosTable.replaceTree(JavacParser.java:4708)
        at 
org.netbeans.lib.nbjavac.services.NBParserFactory$NBJavacParser$EndPosTableImpl.replaceTree(NBParserFactory.java:192)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2085)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2102)
        at 
com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3808)
        at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1686)
        at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1527)
        at 
com.sun.tools.javac.api.JavacTaskImpl$2.process(JavacTaskImpl.java:574)
        at 
com.sun.tools.javac.api.JavacTaskImpl$Filter.run(JavacTaskImpl.java:651)
        at 
com.sun.tools.javac.api.JavacTaskImpl.generate(JavacTaskImpl.java:577)
        at 
org.netbeans.modules.java.source.nbjavac.indexing.OnePassCompileWorker$2.run(OnePassCompileWorker.java:287)
        at 
org.netbeans.modules.java.source.parsing.FileManagerTransaction.runConcurrent(FileManagerTransaction.java:180)
        at 
org.netbeans.modules.java.source.nbjavac.indexing.OnePassCompileWorker.compile(OnePassCompileWorker.java:284)
        at 
org.netbeans.modules.java.source.indexing.JavaCustomIndexer.index(JavaCustomIndexer.java:347)
        at 
org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor$2.run(Indexable.java:138)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runIndexer(RepositoryUpdater.java:275)
        at 
org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor.index(Indexable.java:136)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doIndex(RepositoryUpdater.java:2750)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.access$800(RepositoryUpdater.java:2154)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$1.run(RepositoryUpdater.java:2636)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$1.run(RepositoryUpdater.java:2634)
        at 
org.netbeans.modules.parsing.impl.indexing.errors.TaskCache.refreshTransaction(TaskCache.java:540)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.index(RepositoryUpdater.java:2634)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork$4.call(RepositoryUpdater.java:5714)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork$4.call(RepositoryUpdater.java:5622)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$4.run(RepositoryUpdater.java:2127)
        at org.openide.util.lookup.Lookups.executeWith(Lookups.java:279)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2123)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2104)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.access$1500(RepositoryUpdater.java:136)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork.scanSource(RepositoryUpdater.java:5749)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork.scanSources(RepositoryUpdater.java:5419)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$RootsWork.getDone(RepositoryUpdater.java:5038)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$InitialRootsWork.getDone(RepositoryUpdater.java:5821)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doTheWork(RepositoryUpdater.java:3420)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task._run(RepositoryUpdater.java:6183)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.access$4300(RepositoryUpdater.java:5834)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2$1.run(RepositoryUpdater.java:6099)
        at org.openide.util.lookup.Lookups.executeWith(Lookups.java:279)
        at 
org.netbeans.modules.parsing.impl.RunWhenScanFinishedSupport.performScan(RunWhenScanFinishedSupport.java:83)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:6095)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:6091)
        at 
org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
        at 
org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:335)
        at 
org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
        at 
org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
        at 
org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.run(RepositoryUpdater.java:6091)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
        at 
org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
        at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
        at 
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)

   Locked ownable synchronizers:
        - <0x000000072b5d2168> (a 
java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)

And Refresh (which might be a good culprit) looked like this:

"Refresh-After-WindowActivated" #24 daemon prio=1 os_prio=0 
tid=0x00007ff0e43c5800 nid=0x269f in Object.wait() [0x00007ff144ffc000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at 
org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.waitIOLoadLowerThan(FileChangedManager.java:236)
        - locked <0x000000072182b198> (a java.lang.ThreadLocal)
        at 
org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.pingIO(FileChangedManager.java:265)
        at 
org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.checkRead(FileChangedManager.java:104)
        at 
org.netbeans.TopSecurityManager.notifyRead(TopSecurityManager.java:156)
        at 
org.netbeans.TopSecurityManager.checkRead(TopSecurityManager.java:311)
        at java.io.File.exists(File.java:814)
        at 
org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.exists(FileChangedManager.java:128)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FolderObj.refreshImpl(FolderObj.java:524)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.BaseFileObj.refresh(BaseFileObj.java:868)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FolderObj.refresh(FolderObj.java:537)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.RefreshSlow$1.run(RefreshSlow.java:57)
        at 
org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.idleIO(FileChangedManager.java:201)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.RefreshSlow$1.run(RefreshSlow.java:64)
        at org.openide.filesystems.FileUtil$2.run(FileUtil.java:412)
        at 
org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:102)
        at 
org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:494)
        at org.openide.filesystems.FileUtil.runAtomicAction(FileUtil.java:396)
        at org.openide.filesystems.FileUtil.runAtomicAction(FileUtil.java:416)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.RefreshSlow.refreshFileObject(RefreshSlow.java:68)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory.refresh(FileObjectFactory.java:585)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory.refresh(FileObjectFactory.java:560)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory.refreshAll(FileObjectFactory.java:489)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory$1.run(FileObjectFactory.java:784)
        at 
org.netbeans.modules.masterfs.filebasedfs.FileBasedFileSystem.runAsInconsistent(FileBasedFileSystem.java:87)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory.refresh(FileObjectFactory.java:791)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.RootObj.invokeRefreshFor(RootObj.java:172)
        at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.RefreshSlow.run(RefreshSlow.java:44)
        at 
org.netbeans.core.ui.warmup.MenuWarmUpTask$NbWindowsAdapter.run(MenuWarmUpTask.java:281)
        at 
org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
        at 
org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
        at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
        at 
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)

   Locked ownable synchronizers:
        - None

And we're back into masterfs again.

> NetBeans is unusably slow
> -------------------------
>
>                 Key: NETBEANS-2291
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-2291
>             Project: NetBeans
>          Issue Type: Bug
>          Components: projects - Gradle
>    Affects Versions: 8.2, 10.0, 11.0
>         Environment: Ubuntu 18.10
> Linux 4.18.0
> 12 core Xeon E-2176M with 64Gb RAM
> -Xmx2536m (2.5Gb for NB, of which it uses about 1.7G)
> NetBeans 10vc2, 10vc5, 8.2
> JDK 11.0.1
> JDK 1.8
> G1GC, CMS GC, Serial GC
>            Reporter: Shevek
>            Assignee: Laszlo Kishalmi
>            Priority: Critical
>              Labels: performance, usability
>         Attachments: image-2019-06-12-15-33-06-715.png, 
> nb-11-slow-hotspots.png, netbeans-10vc5-jdk8-hang-gototype.txt.tdump, 
> netbeans-10vc5-jdk8-hang-progressutils.txt.tdump, 
> netbeans-10vc5-jdk8-hang.txt.tdump, netbeans-slow-00.npss, 
> netbeans-slow-01.npss, netbeans-startup-slow.npss, 
> open-file-slow-01.txt.tdump, open-file-slow-02.txt.tdump, 
> open-file-slow-03.txt.tdump, restart-netbeans-and-open-file-01.npss, 
> slow-stack-00.txt
>
>
> I used to use NetBeans 8 on JDK8, it was tolerable, but slow.
> Now I have a new laptop, I've tried nb8, nb10 on jdk8, jdk11, with g1gc, 
> cmsgc, other gc. They are all UNUSABLY slow. By which I mean, it takes over a 
> minute just to open a file.
> Mostly this is because things are waiting for things waiting for very 
> inefficiently implemnted file I/O, editor parsing, or things like that. I've 
> watched a 12-core Xeon chip spend over 4 hours just attempting to handle the 
> Active Reference Queue Daemon thread.
> The slowdown is somewhat incremental - I can escape it as long as I'm happy 
> to restart NetBeans every hour or so (which I'm not happy to do).
> Attached a stack dump to get you started, this took over a minute to open a 
> 284-line Java file from idle.
> Please feel free to ask all the obvious questions, although I'm fairly sure 
> all the obvious things have been done. Mostly, I've got GC down to a 
> negligible amount.
> If there's one or more features of NetBeans I can disable to get acceptable 
> behaviour while still being able to realistically edit Java code, please tell 
> me and I will disable them because I am at the end of my rope after using 
> (and developing for) NetBeans for nearly 10 years. If I can get IntelliJ to 
> load a Java/Gradle project neatly before this gets fixed, I'm gone.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to