Skip to content

Poor VS performance with a large number of NPM packages in node_modules #1128

@kant2002

Description

@kant2002
Expected Behavior

Would be good if memory usage never goes above 500Mb.

Actual Behavior

Latest 10 minutes right now private increase to 1.2Gb and jumping up to 1.8Gb. VS instance become unresponive up to 10 minutes.

  • NTVS Version: 1.2.40627.01
  • Visual Studio Version: VS2013 Update 3
Steps to Reproduce
  1. Not sure how to reproduce but will take a look, if other freezes happens, will try to repro
Additional informaiton

Large memory objects (>10Mb)


02f23e98   731565     11705048 Microsoft.VisualStudio.Shell.IVsHierarchyItem[]
71039f14   731759     11708144 System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner
27953f2c   292873     11714920 System.Collections.Generic.HashSet`1[[Microsoft.VisualStudio.PlatformUI.HierarchyItem, Microsoft.VisualStudio.Shell.TreeNavigation.HierarchyProvider]]
61072aa0   755557     12088912 Microsoft.Internal.VisualStudio.PlatformUI.HierarchyItemPair
2175a0e0   730420     14608400 Microsoft.VisualStudio.PlatformUI.HierarchyManager+<>c__DisplayClass14_0
7103a278   731676     14633520 System.Threading.Tasks.StandardTaskContinuation
71090764   389032     14673104 System.Int32[]
276ee990   753007     15060140 Microsoft.VisualStudio.PlatformUI.HierarchyItemIdentity
710474d4   731636     17559264 System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation
70c62430   736272     17670528 System.Collections.Generic.List`1[[System.Object, mscorlib]]
34d19560   292978     19128000 System.Collections.Generic.HashSet`1+Slot[[Microsoft.VisualStudio.PlatformUI.HierarchyItem, Microsoft.VisualStudio.Shell.TreeNavigation.HierarchyProvider]][]
7108ed0c   766285     22365608 System.Object[]
53dbcea0   731635     23412320 System.Func`2[[System.Threading.Tasks.Task`1[[System.Int32, mscorlib]], mscorlib],[System.Threading.Tasks.Task`1[[System.Int32, mscorlib]], mscorlib]]
710848e4   733805     23481760 System.Action
21759f1c   730421     26295156 Microsoft.VisualStudio.PlatformUI.HierarchyItem+<Disconnect>d__76
71083514   731775     29271000 System.Threading.Tasks.Task+ContingentProperties
2175a1b8   731635     35118480 System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[[System.Int32, mscorlib],[System.Threading.Tasks.Task`1[[System.Int32, mscorlib]], mscorlib]]
63240ff8   731636     35118528 System.Threading.Tasks.UnwrapPromise`1[[System.Int32, mscorlib]]
7107ee2c  1463599     52689564 System.Runtime.Remoting.Messaging.LogicalCallContext
7108c508  1463707     64403108 System.Threading.ExecutionContext
7108e918   658353     65263390 System.String
71092388  1465984     71596440 System.Collections.Hashtable+bucket[]
71092298  1465981     76231012 System.Collections.Hashtable
276ef080   753007     93372868 Microsoft.VisualStudio.PlatformUI.HierarchyItem
00dda008   924929    140642198      Free

Stack trace when VS freeze

00afe95c 696a61ab (MethodDesc 69621838 +0x83 DomainNeutralILStubClass.IL_STUB_CLRtoCOM(UInt32, System.Guid ByRef, Microsoft.VisualStudio.Shell.Interop.IVsWindowFrame ByRef))
00afe984 696a61ab (MethodDesc 69621838 +0x83 DomainNeutralILStubClass.IL_STUB_CLRtoCOM(UInt32, System.Guid ByRef, Microsoft.VisualStudio.Shell.Interop.IVsWindowFrame ByRef))
00afe9d8 17a92003 (MethodDesc 12c5dadc +0x4b Microsoft.VisualStudioTools.Project.UIHierarchyUtilities.GetUIHierarchyWindow(System.IServiceProvider, System.Guid)), calling 187109c2
00afe9f4 0670c2e3 (MethodDesc 12c5d728 +0x63 Microsoft.VisualStudioTools.Project.HierarchyNode.ExpandItem(Microsoft.VisualStudio.Shell.Interop.EXPANDFLAGS)), calling (MethodDesc 12c5dadc +0 Microsoft.VisualStudioTools.Project.UIHierarchyUtilities.GetUIHierarchyWindow(System.IServiceProvider, System.Guid))
00afea28 17ac0ffb (MethodDesc 0925ae40 +0x15b Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>)), calling (MethodDesc 12c5d728 +0 Microsoft.VisualStudioTools.Project.HierarchyNode.ExpandItem(Microsoft.VisualStudio.Shell.Interop.EXPANDFLAGS))
00afea68 17ac0cb6 (MethodDesc 0925ae28 +0x46 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>)), calling (MethodDesc 0925ae40 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>))
00afea84 17ac0fdf (MethodDesc 0925ae40 +0x13f Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>)), calling (MethodDesc 0925ae28 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>))
00afeac8 17ac0cb6 (MethodDesc 0925ae28 +0x46 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>)), calling (MethodDesc 0925ae40 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>))
00afeae4 17ac0fdf (MethodDesc 0925ae40 +0x13f Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>)), calling (MethodDesc 0925ae28 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>))
00afeb28 17ac0cb6 (MethodDesc 0925ae28 +0x46 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>)), calling (MethodDesc 0925ae40 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>))
00afeb44 17ac0fdf (MethodDesc 0925ae40 +0x13f Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>)), calling (MethodDesc 0925ae28 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>))
00afeb88 17ac0cb6 (MethodDesc 0925ae28 +0x46 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>)), calling (MethodDesc 0925ae40 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>))
00afeba4 17ac0fdf (MethodDesc 0925ae40 +0x13f Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>)), calling (MethodDesc 0925ae28 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>))
00afebe8 17ac0cb6 (MethodDesc 0925ae28 +0x46 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>)), calling (MethodDesc 0925ae40 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>))
00afec04 17ac0fdf (MethodDesc 0925ae40 +0x13f Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>)), calling (MethodDesc 0925ae28 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>))
00afec48 17ac0cb6 (MethodDesc 0925ae28 +0x46 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>)), calling (MethodDesc 0925ae40 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>))
00afec64 17ac0fdf (MethodDesc 0925ae40 +0x13f Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>)), calling (MethodDesc 0925ae28 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>))
00afeca8 17ac0cb6 (MethodDesc 0925ae28 +0x46 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>)), calling (MethodDesc 0925ae40 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.BuildModuleHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,Microsoft.NodejsTools.Project.DependencyNode>))
00afecc4 17ac1e3a (MethodDesc 0925b14c +0x42 Microsoft.NodejsTools.Project.NodeModulesNode.ReloadGlobalPackageHierarchy(Microsoft.NodejsTools.Npm.INpmController)), calling (MethodDesc 0925ae28 +0 Microsoft.NodejsTools.Project.AbstractNpmNode.ReloadHierarchy(Microsoft.VisualStudioTools.Project.HierarchyNode, System.Collections.Generic.IEnumerable`1<Microsoft.NodejsTools.Npm.IPackage>))
00afecdc 17ac087a (MethodDesc 0925b140 +0x3a Microsoft.NodejsTools.Project.NodeModulesNode.ReloadPackageHierarchies(Microsoft.NodejsTools.Npm.INpmController)), calling (MethodDesc 0925b14c +0 Microsoft.NodejsTools.Project.NodeModulesNode.ReloadGlobalPackageHierarchy(Microsoft.NodejsTools.Npm.INpmController))
00afecec 17ac07f7 (MethodDesc 0925b134 +0x2f Microsoft.NodejsTools.Project.NodeModulesNode.ReloadHierarchy()), calling (MethodDesc 0925b140 +0 Microsoft.NodejsTools.Project.NodeModulesNode.ReloadPackageHierarchies(Microsoft.NodejsTools.Npm.INpmController))
00afed00 70fbbbc0 (MethodDesc 70ceb298 +0x2c System.Threading.Tasks.Task.InnerInvoke())

Have full dump if needed.
/cc: @mjbvz or @mousetraps

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions