Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以使溢出。
4年前关闭。
on-topic
是否可以从命令行运行.NET垃圾收集器,例如没有编写代码?
编辑:
当被问到这个问题时,我的意思恰恰是这里对Java垃圾收集器的要求:
Improve this question
因此,如果有办法在JVM中执行此操作,则看不到它在.NET中不存在的原因
或引用
...
用法:PerfView ForceGC流程
在指定进程上强制GC
参数:
流程要强制执行的流程的流程ID或流程名称(无扩展名的Exe)
GC。
...
这里的“问题”是,这将打开一个新的控制台窗口,完成后,提示您关闭此窗口。
但是,PerfView.exe会将大量可执行文件转储到
因此,一旦运行了PerfView.exe命令,就可以手动调用
输出示例如下:
请注意,以上内容不是AFAIK正式使用的工具,可能会停止与新版本一起使用。而且,当然,PerfView可以做的不仅仅是强制GC(开始here)。
在内部,上述方法使用CLR(ICorProfilerInfo::ForceGC)随附的source分析接口/方法。因此,为此目的编写“简单” /“独立”工具并不是完全不可能的。减。
更新:像这样的PerfView现在是open source,并且该工具在is part of it上面进行了讨论。以防您好奇。
想改善这个问题吗?更新问题,以使溢出。
4年前关闭。
on-topic
是否可以从命令行运行.NET垃圾收集器,例如没有编写代码?
编辑:
当被问到这个问题时,我的意思恰恰是这里对Java垃圾收集器的要求:
Improve this question
因此,如果有办法在JVM中执行此操作,则看不到它在.NET中不存在的原因
最佳答案
有一个选项,尽管我不知道这是否“安全生产”。也就是说,我不知道目标进程崩溃的风险有多大。但是,如果用于故障排除和/或分析,它可能会派上用场。
您可以将PerfView用于以下目的:
PerfView.exe ForceGC [ProcessName | Process ID]
或引用
PerfView.exe /?
输出:...
用法:PerfView ForceGC流程
在指定进程上强制GC
参数:
流程要强制执行的流程的流程ID或流程名称(无扩展名的Exe)
GC。
...
这里的“问题”是,这将打开一个新的控制台窗口,完成后,提示您关闭此窗口。
但是,PerfView.exe会将大量可执行文件转储到
%APPDATA%\PerfView\_version_
中,这些可执行文件作为资源打包在PerfView.exe可执行文件中。因此,一旦运行了PerfView.exe命令,就可以手动调用
HeapDump.exe
工具(在我的情况下为x64框,进程ID为15396):cd C:\Users\MyUserName\AppData\Roaming\PerfView\VER.2014-02-04.09.06.52.000\AMD64
HeapDump.exe /ForceGC 15396
输出示例如下:
Loading the ETWClrProfiler.
Turning on debug privilege.
Highest Runtime in process is version v4.0.30319
0,0s: Trying to attach a profiler.
0,1s: Done Attaching ETLClrProfiler ret = 0
Attached ETWClrProfiler.
0,1s: Enabling JScript Heap Provider
0,1s: Enabling EtwClrProfiler
0,1s: Enabling CLR GC events
0,1s: Requesting a JScript GC
0,1s: Requesting a DotNet GC
4,0s: .NET GC Starting at 0,15s.
4,0s: .NET GC stats, at 0,16s Survived 2221152.
6,0s: .NET GC complete at 0,17s.
6,0s: Triggered .NET GC, No JScript heap detected
6,1s: Requesting ETWClrProfiler unload.
6,1s: Shutting down ETW session
[ 6,1s: Done forcing GCs success=True]
请注意,以上内容不是AFAIK正式使用的工具,可能会停止与新版本一起使用。而且,当然,PerfView可以做的不仅仅是强制GC(开始here)。
在内部,上述方法使用CLR(ICorProfilerInfo::ForceGC)随附的source分析接口/方法。因此,为此目的编写“简单” /“独立”工具并不是完全不可能的。减。
更新:像这样的PerfView现在是open source,并且该工具在is part of it上面进行了讨论。以防您好奇。
09-04 01:01