8 comments
Comment actions Permalink

Hello Jeff,

there is no fully automatic way to do that. There is, however, a feature
that may help:
invoke 'Find Module Usages' from context menu on each of the project references
in question. If no
usages found, the reference can be safely removed. This also works for references
to assemblies.


Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

Is there a way to clean up project references which are no longer
needed?



0
Comment actions Permalink

Hi Dmitry,

I tried this and it does work.
However:
- Performance is slow. It may be faster to delete the reference and check
the build log for errors.
- There seems to be some kind of memory issue. During the first search,
virtual memory usage rose steadily to about 1.1GB. Subsequent searches
stayed about the same level and performance continued to degrade to a point
where the command was unusable.

Jeff

"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...

Hello Jeff,

>

there is no fully automatic way to do that. There is, however, a feature
that may help:
invoke 'Find Module Usages' from context menu on each of the project
references in question. If no
usages found, the reference can be safely removed. This also works for
references to assemblies.

>
>

Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

>
>> Is there a way to clean up project references which are no longer
>> needed?
>>
>



0
Comment actions Permalink

Hello Jeff,

you're probably right about the performance. Basically, this feature needs
to resolve every identifier in each file in the project,
so this can't be fast. The motivation for this feature was to provide an
understanding how a particular reference is used in the project
which is more functionality than is required for just giving an answer to
the question if it is used at all.

Concerning the possible memory leak, it's interesting. Do I understand correctly
that the huge amount of memory allocated did not
go away in that working session of VS? Thanks.


Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

Hi Dmitry,

I tried this and it does work.
However:
- Performance is slow. It may be faster to delete the reference and
check
the build log for errors.
- There seems to be some kind of memory issue. During the first
search,
virtual memory usage rose steadily to about 1.1GB. Subsequent searches
stayed about the same level and performance continued to degrade to a
point
where the command was unusable.
Jeff

"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...

>> Hello Jeff,
>>
>> there is no fully automatic way to do that. There is, however, a
>> feature
>> that may help:
>> invoke 'Find Module Usages' from context menu on each of the project
>> references in question. If no
>> usages found, the reference can be safely removed. This also works
>> for
>> references to assemblies.
>> Regards,
>> Dmitry Shaporenkov
>> JetBrains, Inc
>> http://www.jetbrains.com
>> "Develop with pleasure!"
>>> Is there a way to clean up project references which are no longer
>>> needed?
>>>


0
Comment actions Permalink

Yes, the memory seemed to stay with that session and did not get released. I
ran several other applications to see if the working set would get trimmed
but it did not change.
I have attached the Performance Graph from process explorer showing the
results of the three searches I did. You can see how memory usage increased
during the first search and then stayed at the level on subsequent searches.

"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...

Hello Jeff,

>

you're probably right about the performance. Basically, this feature needs
to resolve every identifier in each file in the project,
so this can't be fast. The motivation for this feature was to provide an
understanding how a particular reference is used in the project
which is more functionality than is required for just giving an answer to
the question if it is used at all.

>

Concerning the possible memory leak, it's interesting. Do I understand
correctly
that the huge amount of memory allocated did not
go away in that working session of VS? Thanks.

>
>

Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

>
>> Hi Dmitry,
>>
>> I tried this and it does work.
>> However:
>> - Performance is slow. It may be faster to delete the reference and
>> check
>> the build log for errors.
>> - There seems to be some kind of memory issue. During the first
>> search,
>> virtual memory usage rose steadily to about 1.1GB. Subsequent searches
>> stayed about the same level and performance continued to degrade to a
>> point
>> where the command was unusable.
>> Jeff
>>
>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
>> news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>
>>> Hello Jeff,
>>>
>>> there is no fully automatic way to do that. There is, however, a
>>> feature
>>> that may help:
>>> invoke 'Find Module Usages' from context menu on each of the project
>>> references in question. If no
>>> usages found, the reference can be safely removed. This also works
>>> for
>>> references to assemblies.
>>> Regards,
>>> Dmitry Shaporenkov
>>> JetBrains, Inc
>>> http://www.jetbrains.com
>>> "Develop with pleasure!"
>>>> Is there a way to clean up project references which are no longer
>>>> needed?
>>>>
>





0
Comment actions Permalink

Hello Jeff,

I have an idea that not releasing memory might be caused by holding some
find results opened.
What I think of is that the Find Module Usages feature shows its results
in the Find Results window,
and probably if you have results of previous searches still opened in a tab
in this window, the memory might not be released.
I'll try to verify this hypothesis, and if you have a chance to check it,
I'll be glad to hear of your experience.

Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

Yes, the memory seemed to stay with that session and did not get
released. I
ran several other applications to see if the working set would get
trimmed
but it did not change.
I have attached the Performance Graph from process explorer showing
the
results of the three searches I did. You can see how memory usage
increased
during the first search and then stayed at the level on subsequent
searches.
"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...

>> Hello Jeff,
>>
>> you're probably right about the performance. Basically, this feature
>> needs
>> to resolve every identifier in each file in the project,
>> so this can't be fast. The motivation for this feature was to provide
>> an
>> understanding how a particular reference is used in the project
>> which is more functionality than is required for just giving an
>> answer to
>> the question if it is used at all.
>> Concerning the possible memory leak, it's interesting. Do I
>> understand
>> correctly
>> that the huge amount of memory allocated did not
>> go away in that working session of VS? Thanks.
>> Regards,
>> Dmitry Shaporenkov
>> JetBrains, Inc
>> http://www.jetbrains.com
>> "Develop with pleasure!"
>>> Hi Dmitry,
>>>
>>> I tried this and it does work.
>>> However:
>>> - Performance is slow. It may be faster to delete the reference and
>>> check
>>> the build log for errors.
>>> - There seems to be some kind of memory issue. During the first
>>> search,
>>> virtual memory usage rose steadily to about 1.1GB. Subsequent
>>> searches
>>> stayed about the same level and performance continued to degrade to
>>> a
>>> point
>>> where the command was unusable.
>>> Jeff
>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>>
>>>> Hello Jeff,
>>>>
>>>> there is no fully automatic way to do that. There is, however, a
>>>> feature
>>>> that may help:
>>>> invoke 'Find Module Usages' from context menu on each of the
>>>> project
>>>> references in question. If no
>>>> usages found, the reference can be safely removed. This also works
>>>> for
>>>> references to assemblies.
>>>> Regards,
>>>> Dmitry Shaporenkov
>>>> JetBrains, Inc
>>>> http://www.jetbrains.com
>>>> "Develop with pleasure!"
>>>>> Is there a way to clean up project references which are no longer
>>>>> needed?
>>>>>


0
Comment actions Permalink

Hi Dmitry,
I tried closing the search window but it had no effect on memory usage.
When I tried a second search, I got an out of memory exception which I
submitted via JIRA.
Jeff

JetBrains.ReSharper.Util.InternalErrorException: Exception of type
'System.OutOfMemoryException' was thrown.
An exception has occurred ---> System.OutOfMemoryException: Exception of
type 'System.OutOfMemoryException' was thrown.
at System.Collections.Hashtable.rehash(Int32 newsize)
at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean
add)
at System.Collections.Hashtable.set_Item(Object key, Object value)
at JetBrains.ReSharper.Util.WeakHashtable.set_Item(Object key, Object
value) in
c:\Agent\work\ReSharper2.0\src\Util\src\dataStructures\WeakHashtable.cs:line
60
at
JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.CacheBySourceResult(IRef
reference, ResolveResult value, CachedPsiFile psiFile) in
c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:line 120
at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.set_Item(IRef
reference, ResolveResult value) in
c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:line 84
at
JetBrains.ReSharper.Psi.Impl.Resolve.ResolveUtil.ResolveWithCache(IInternalRef
reference) in
c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveUtil.cs:line 613
at
JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ReferenceExpressionBase.Resolve()
in
c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ReferenceExpressionBase.cs:line
212
at
JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAction.MyRecursiveElementProcessor.ProcessAfterInterior(IElement
element) in
c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleReferenceUsagesAction.cs:line
266
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
76
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAction.MyProjectVisitor.VisitProjectFile(IProjectFile
projectFile) in
c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleReferenceUsagesAction.cs:line
345
at
JetBrains.ReSharper.ProjectModel.Impl.ProjectFileImpl.Accept(ProjectVisitor
projectVisitor) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFileImpl.cs:line
128
at
JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectItem(IProjectItem
projectItem) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 77
at
JetBrains.ReSharper.ProjectModel.ProjectVisitor.VisitProjectFolder(IProjectFolder
projectFolder) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 26
at
JetBrains.ReSharper.ProjectModel.Impl.ProjectFolderImpl.Accept(ProjectVisitor
projectVisitor) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFolderImpl.cs:line
337
at
JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectItem(IProjectItem
projectItem) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 77
at
JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProject(IProject
project) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 82
at
JetBrains.ReSharper.ProjectModel.Impl.ProjectImpl.Accept(ProjectVisitor
projectVisitor) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectImpl.cs:line 170
at
JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAction.MyTaskHelper.Run(IProgressIndicator
progressIndicator) in
c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleReferenceUsagesAction.cs:line
373
at
JetBrains.ReSharper.Shell.Progress.ProgressWindow.AsyncTaskHelper.ThreadFunc()
in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:line
479
--- End of inner exception stack trace ---

at JetBrains.ReSharper.Util.Logger.LogExceptionEx(Exception, String,
Boolean) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 327
column 9
at JetBrains.ReSharper.Util.Logger.LogException(Exception) in
c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 339 column 5
at JetBrains.ReSharper.Shell.Progress.AsyncTaskHelper.ThreadFunc() in
c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:line 487
column 11
at System.Threading.ThreadHelper.ThreadStart_Context(Object)
at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback,
Object)
at System.Threading.ThreadHelper.ThreadStart()



"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6ea78c8acae94eadafd@news.intellij.net...

Hello Jeff,

>

I have an idea that not releasing memory might be caused by holding some
find results opened.
What I think of is that the Find Module Usages feature shows its results
in the Find Results window,
and probably if you have results of previous searches still opened in a
tab in this window, the memory might not be released.
I'll try to verify this hypothesis, and if you have a chance to check it,
I'll be glad to hear of your experience.

>

Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

>
>> Yes, the memory seemed to stay with that session and did not get
>> released. I
>> ran several other applications to see if the working set would get
>> trimmed
>> but it did not change.
>> I have attached the Performance Graph from process explorer showing
>> the
>> results of the three searches I did. You can see how memory usage
>> increased
>> during the first search and then stayed at the level on subsequent
>> searches.
>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
>> news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...
>>
>>> Hello Jeff,
>>>
>>> you're probably right about the performance. Basically, this feature
>>> needs
>>> to resolve every identifier in each file in the project,
>>> so this can't be fast. The motivation for this feature was to provide
>>> an
>>> understanding how a particular reference is used in the project
>>> which is more functionality than is required for just giving an
>>> answer to
>>> the question if it is used at all.
>>> Concerning the possible memory leak, it's interesting. Do I
>>> understand
>>> correctly
>>> that the huge amount of memory allocated did not
>>> go away in that working session of VS? Thanks.
>>> Regards,
>>> Dmitry Shaporenkov
>>> JetBrains, Inc
>>> http://www.jetbrains.com
>>> "Develop with pleasure!"
>>>> Hi Dmitry,
>>>>
>>>> I tried this and it does work.
>>>> However:
>>>> - Performance is slow. It may be faster to delete the reference and
>>>> check
>>>> the build log for errors.
>>>> - There seems to be some kind of memory issue. During the first
>>>> search,
>>>> virtual memory usage rose steadily to about 1.1GB. Subsequent
>>>> searches
>>>> stayed about the same level and performance continued to degrade to
>>>> a
>>>> point
>>>> where the command was unusable.
>>>> Jeff
>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>>>
>>>>> Hello Jeff,
>>>>>
>>>>> there is no fully automatic way to do that. There is, however, a
>>>>> feature
>>>>> that may help:
>>>>> invoke 'Find Module Usages' from context menu on each of the
>>>>> project
>>>>> references in question. If no
>>>>> usages found, the reference can be safely removed. This also works
>>>>> for
>>>>> references to assemblies.
>>>>> Regards,
>>>>> Dmitry Shaporenkov
>>>>> JetBrains, Inc
>>>>> http://www.jetbrains.com
>>>>> "Develop with pleasure!"
>>>>>> Is there a way to clean up project references which are no longer
>>>>>> needed?
>>>>>>
>



0
Comment actions Permalink

Hello Jeff,

could you please sketch how large is your solution and the project in question?
Thanks.


Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

Hi Dmitry,
I tried closing the search window but it had no effect on memory
usage.
When I tried a second search, I got an out of memory exception which I
submitted via JIRA.
Jeff
JetBrains.ReSharper.Util.InternalErrorException: Exception of type
'System.OutOfMemoryException' was thrown.
An exception has occurred ---> System.OutOfMemoryException: Exception
of
type 'System.OutOfMemoryException' was thrown.
at System.Collections.Hashtable.rehash(Int32 newsize)
at System.Collections.Hashtable.Insert(Object key, Object nvalue,
Boolean
add)
at System.Collections.Hashtable.set_Item(Object key, Object value)
at JetBrains.ReSharper.Util.WeakHashtable.set_Item(Object key,
Object
value) in
c:\Agent\work\ReSharper2.0\src\Util\src\dataStructures\WeakHashtable.c
s:line
60
at
JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.CacheBySourceResult(
IRef
reference, ResolveResult value, CachedPsiFile psiFile) in
c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li
ne 120
at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.set_Item(IRef
reference, ResolveResult value) in
c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li
ne 84
at
JetBrains.ReSharper.Psi.Impl.Resolve.ResolveUtil.ResolveWithCache(IInt
ernalRef
reference) in
c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveUtil.cs:lin
e 613
at
JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ReferenceExpressionBase.Resol
ve()
in
c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ReferenceExpre
ssionBase.cs:line
212
at
JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc
tion.MyRecursiveElementProcessor.ProcessAfterInterior(IElement
element) in
c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe
ferenceUsagesAction.cs:line
266
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
nts(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
cs:line
76
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
nts(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
nts(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
nts(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
nts(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
nts(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
nts(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
nts(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
nts(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
cs:line
75
at
JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc
tion.MyProjectVisitor.VisitProjectFile(IProjectFile
projectFile) in
c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe
ferenceUsagesAction.cs:line
345
at
JetBrains.ReSharper.ProjectModel.Impl.ProjectFileImpl.Accept(ProjectVi
sitor
projectVisitor) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFileImpl.c
s:line
128
at
JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI
tem(IProjectItem
projectItem) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
77
at
JetBrains.ReSharper.ProjectModel.ProjectVisitor.VisitProjectFolder(IPr
ojectFolder
projectFolder) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
26
at
JetBrains.ReSharper.ProjectModel.Impl.ProjectFolderImpl.Accept(Project
Visitor
projectVisitor) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFolderImpl
.cs:line
337
at
JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI
tem(IProjectItem
projectItem) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
77
at
JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProject(
IProject
project) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
82
at
JetBrains.ReSharper.ProjectModel.Impl.ProjectImpl.Accept(ProjectVisito
r
projectVisitor) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectImpl.cs:li
ne 170
at
JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc
tion.MyTaskHelper.Run(IProgressIndicator
progressIndicator) in
c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe
ferenceUsagesAction.cs:line
373
at
JetBrains.ReSharper.Shell.Progress.ProgressWindow.AsyncTaskHelper.Thre
adFunc()
in
c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li
ne
479
--- End of inner exception stack trace ---
at JetBrains.ReSharper.Util.Logger.LogExceptionEx(Exception, String,
Boolean) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 327
column 9
at JetBrains.ReSharper.Util.Logger.LogException(Exception) in
c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 339 column 5
at JetBrains.ReSharper.Shell.Progress.AsyncTaskHelper.ThreadFunc() in
c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li
ne 487
column 11
at System.Threading.ThreadHelper.ThreadStart_Context(Object)
at System.Threading.ExecutionContext.Run(ExecutionContext,
ContextCallback,
Object)
at System.Threading.ThreadHelper.ThreadStart()
"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6ea78c8acae94eadafd@news.intellij.net...

>> Hello Jeff,
>>
>> I have an idea that not releasing memory might be caused by holding
>> some
>> find results opened.
>> What I think of is that the Find Module Usages feature shows its
>> results
>> in the Find Results window,
>> and probably if you have results of previous searches still opened in
>> a
>> tab in this window, the memory might not be released.
>> I'll try to verify this hypothesis, and if you have a chance to check
>> it,
>> I'll be glad to hear of your experience.
>> Regards,
>> Dmitry Shaporenkov
>> JetBrains, Inc
>> http://www.jetbrains.com
>> "Develop with pleasure!"
>>> Yes, the memory seemed to stay with that session and did not get
>>> released. I
>>> ran several other applications to see if the working set would get
>>> trimmed
>>> but it did not change.
>>> I have attached the Performance Graph from process explorer showing
>>> the
>>> results of the three searches I did. You can see how memory usage
>>> increased
>>> during the first search and then stayed at the level on subsequent
>>> searches.
>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>> message
>>> news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...
>>>> Hello Jeff,
>>>>
>>>> you're probably right about the performance. Basically, this
>>>> feature
>>>> needs
>>>> to resolve every identifier in each file in the project,
>>>> so this can't be fast. The motivation for this feature was to
>>>> provide
>>>> an
>>>> understanding how a particular reference is used in the project
>>>> which is more functionality than is required for just giving an
>>>> answer to
>>>> the question if it is used at all.
>>>> Concerning the possible memory leak, it's interesting. Do I
>>>> understand
>>>> correctly
>>>> that the huge amount of memory allocated did not
>>>> go away in that working session of VS? Thanks.
>>>> Regards,
>>>> Dmitry Shaporenkov
>>>> JetBrains, Inc
>>>> http://www.jetbrains.com
>>>> "Develop with pleasure!"
>>>>> Hi Dmitry,
>>>>>
>>>>> I tried this and it does work.
>>>>> However:
>>>>> - Performance is slow. It may be faster to delete the reference
>>>>> and
>>>>> check
>>>>> the build log for errors.
>>>>> - There seems to be some kind of memory issue. During the first
>>>>> search,
>>>>> virtual memory usage rose steadily to about 1.1GB. Subsequent
>>>>> searches
>>>>> stayed about the same level and performance continued to degrade
>>>>> to
>>>>> a
>>>>> point
>>>>> where the command was unusable.
>>>>> Jeff
>>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>>>>> Hello Jeff,
>>>>>>
>>>>>> there is no fully automatic way to do that. There is, however, a
>>>>>> feature
>>>>>> that may help:
>>>>>> invoke 'Find Module Usages' from context menu on each of the
>>>>>> project
>>>>>> references in question. If no
>>>>>> usages found, the reference can be safely removed. This also
>>>>>> works
>>>>>> for
>>>>>> references to assemblies.
>>>>>> Regards,
>>>>>> Dmitry Shaporenkov
>>>>>> JetBrains, Inc
>>>>>> http://www.jetbrains.com
>>>>>> "Develop with pleasure!"
>>>>>>> Is there a way to clean up project references which are no
>>>>>>> longer needed?
>>>>>>>


0
Comment actions Permalink

Hi Dmitry,
My solution has 12 projects.
The project I am searching is large - it has about 1600 files.
Jeff

"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6ed78c8aed810fd2cd8@news.intellij.net...

Hello Jeff,

>

could you please sketch how large is your solution and the project in
question? Thanks.

>
>

Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

>
>> Hi Dmitry,
>> I tried closing the search window but it had no effect on memory
>> usage.
>> When I tried a second search, I got an out of memory exception which I
>> submitted via JIRA.
>> Jeff
>> JetBrains.ReSharper.Util.InternalErrorException: Exception of type
>> 'System.OutOfMemoryException' was thrown.
>> An exception has occurred ---> System.OutOfMemoryException: Exception
>> of
>> type 'System.OutOfMemoryException' was thrown.
>> at System.Collections.Hashtable.rehash(Int32 newsize)
>> at System.Collections.Hashtable.Insert(Object key, Object nvalue,
>> Boolean
>> add)
>> at System.Collections.Hashtable.set_Item(Object key, Object value)
>> at JetBrains.ReSharper.Util.WeakHashtable.set_Item(Object key,
>> Object
>> value) in
>> c:\Agent\work\ReSharper2.0\src\Util\src\dataStructures\WeakHashtable.c
>> s:line
>> 60
>> at
>> JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.CacheBySourceResult(
>> IRef
>> reference, ResolveResult value, CachedPsiFile psiFile) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li
>> ne 120
>> at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.set_Item(IRef
>> reference, ResolveResult value) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li
>> ne 84
>> at
>> JetBrains.ReSharper.Psi.Impl.Resolve.ResolveUtil.ResolveWithCache(IInt
>> ernalRef
>> reference) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveUtil.cs:lin
>> e 613
>> at
>> JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ReferenceExpressionBase.Resol
>> ve()
>> in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ReferenceExpre
>> ssionBase.cs:line
>> 212
>> at
>> JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc
>> tion.MyRecursiveElementProcessor.ProcessAfterInterior(IElement
>> element) in
>> c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe
>> ferenceUsagesAction.cs:line
>> 266
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 76
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc
>> tion.MyProjectVisitor.VisitProjectFile(IProjectFile
>> projectFile) in
>> c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe
>> ferenceUsagesAction.cs:line
>> 345
>> at
>> JetBrains.ReSharper.ProjectModel.Impl.ProjectFileImpl.Accept(ProjectVi
>> sitor
>> projectVisitor) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFileImpl.c
>> s:line
>> 128
>> at
>> JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI
>> tem(IProjectItem
>> projectItem) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
>> 77
>> at
>> JetBrains.ReSharper.ProjectModel.ProjectVisitor.VisitProjectFolder(IPr
>> ojectFolder
>> projectFolder) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
>> 26
>> at
>> JetBrains.ReSharper.ProjectModel.Impl.ProjectFolderImpl.Accept(Project
>> Visitor
>> projectVisitor) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFolderImpl
>> .cs:line
>> 337
>> at
>> JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI
>> tem(IProjectItem
>> projectItem) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
>> 77
>> at
>> JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProject(
>> IProject
>> project) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
>> 82
>> at
>> JetBrains.ReSharper.ProjectModel.Impl.ProjectImpl.Accept(ProjectVisito
>> r
>> projectVisitor) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectImpl.cs:li
>> ne 170
>> at
>> JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc
>> tion.MyTaskHelper.Run(IProgressIndicator
>> progressIndicator) in
>> c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe
>> ferenceUsagesAction.cs:line
>> 373
>> at
>> JetBrains.ReSharper.Shell.Progress.ProgressWindow.AsyncTaskHelper.Thre
>> adFunc()
>> in
>> c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li
>> ne
>> 479
>> --- End of inner exception stack trace ---
>> at JetBrains.ReSharper.Util.Logger.LogExceptionEx(Exception, String,
>> Boolean) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 327
>> column 9
>> at JetBrains.ReSharper.Util.Logger.LogException(Exception) in
>> c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 339 column 5
>> at JetBrains.ReSharper.Shell.Progress.AsyncTaskHelper.ThreadFunc() in
>> c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li
>> ne 487
>> column 11
>> at System.Threading.ThreadHelper.ThreadStart_Context(Object)
>> at System.Threading.ExecutionContext.Run(ExecutionContext,
>> ContextCallback,
>> Object)
>> at System.Threading.ThreadHelper.ThreadStart()
>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
>> news:c8a894d91b6ea78c8acae94eadafd@news.intellij.net...
>>
>>> Hello Jeff,
>>>
>>> I have an idea that not releasing memory might be caused by holding
>>> some
>>> find results opened.
>>> What I think of is that the Find Module Usages feature shows its
>>> results
>>> in the Find Results window,
>>> and probably if you have results of previous searches still opened in
>>> a
>>> tab in this window, the memory might not be released.
>>> I'll try to verify this hypothesis, and if you have a chance to check
>>> it,
>>> I'll be glad to hear of your experience.
>>> Regards,
>>> Dmitry Shaporenkov
>>> JetBrains, Inc
>>> http://www.jetbrains.com
>>> "Develop with pleasure!"
>>>> Yes, the memory seemed to stay with that session and did not get
>>>> released. I
>>>> ran several other applications to see if the working set would get
>>>> trimmed
>>>> but it did not change.
>>>> I have attached the Performance Graph from process explorer showing
>>>> the
>>>> results of the three searches I did. You can see how memory usage
>>>> increased
>>>> during the first search and then stayed at the level on subsequent
>>>> searches.
>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>>> message
>>>> news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...
>>>>> Hello Jeff,
>>>>>
>>>>> you're probably right about the performance. Basically, this
>>>>> feature
>>>>> needs
>>>>> to resolve every identifier in each file in the project,
>>>>> so this can't be fast. The motivation for this feature was to
>>>>> provide
>>>>> an
>>>>> understanding how a particular reference is used in the project
>>>>> which is more functionality than is required for just giving an
>>>>> answer to
>>>>> the question if it is used at all.
>>>>> Concerning the possible memory leak, it's interesting. Do I
>>>>> understand
>>>>> correctly
>>>>> that the huge amount of memory allocated did not
>>>>> go away in that working session of VS? Thanks.
>>>>> Regards,
>>>>> Dmitry Shaporenkov
>>>>> JetBrains, Inc
>>>>> http://www.jetbrains.com
>>>>> "Develop with pleasure!"
>>>>>> Hi Dmitry,
>>>>>>
>>>>>> I tried this and it does work.
>>>>>> However:
>>>>>> - Performance is slow. It may be faster to delete the reference
>>>>>> and
>>>>>> check
>>>>>> the build log for errors.
>>>>>> - There seems to be some kind of memory issue. During the first
>>>>>> search,
>>>>>> virtual memory usage rose steadily to about 1.1GB. Subsequent
>>>>>> searches
>>>>>> stayed about the same level and performance continued to degrade
>>>>>> to
>>>>>> a
>>>>>> point
>>>>>> where the command was unusable.
>>>>>> Jeff
>>>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>>>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>>>>>> Hello Jeff,
>>>>>>>
>>>>>>> there is no fully automatic way to do that. There is, however, a
>>>>>>> feature
>>>>>>> that may help:
>>>>>>> invoke 'Find Module Usages' from context menu on each of the
>>>>>>> project
>>>>>>> references in question. If no
>>>>>>> usages found, the reference can be safely removed. This also
>>>>>>> works
>>>>>>> for
>>>>>>> references to assemblies.
>>>>>>> Regards,
>>>>>>> Dmitry Shaporenkov
>>>>>>> JetBrains, Inc
>>>>>>> http://www.jetbrains.com
>>>>>>> "Develop with pleasure!"
>>>>>>>> Is there a way to clean up project references which are no
>>>>>>>> longer needed?
>>>>>>>>
>



0

Please sign in to leave a comment.