[
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