我正在使用对性能敏感的WPF应用程序,并希望每秒为我的应用程序注销一些关键内存使用情况统计信息。我的总体目标是通过确保我的应用程序在运行时不分配(多)内存来尽可能避免垃圾收集的惩罚。
有很多关于如何通过性能计数器或当前进程的VirtualMemorySize64获取此信息的信息。
我的问题是,VS2013探查器告诉我这些调用本身正在导致大量的内存分配。
刚刚获得“Private Bytes”性能计数器的RawValue会导致在几秒钟内分配近3MB,并为VirtualMemorySize64的调用分配另外3MB。
是否有更高效的方法来获取这些数字?
答案 0 :(得分:0)
运行其他流程以收集统计信息。
public static void CollectStatInfo(int pid)
{
var memorySize = Process.GetProcessById(pid).PrivateMemorySize64;
}
static void Main(string[] args)
{
switch (args.FirstOrDefault())
{
case "--collect-stat-info":
var pid = int.Parse(args.ElementAtOrDefault(1));
CollectStatInfo(pid);
return;
}
CollectStatInfoFromOtherProcess();
//code
}
public static void CollectStatInfoFromOtherProcess()
{
Process.Start(new ProcessStartInfo()
{
Arguments = $"--collect-stat-info {Process.GetCurrentProcess().Id}",
FileName = Assembly.GetExecutingAssembly().Location
}
);
}
答案 1 :(得分:-1)
为什么不利用:
#tabs {
border-style: none !important;
font-family: Verdana, Arial, Tahoma, Helvetica, sans-serif !important;
font-size: 11px !important;
}
.ui-tabs-panel {
border: solid 1px #999999 !important;
border-radius: 0;
}
.ui-tabs {
padding: 0 !important;
}
.ui-tabs .ui-tabs-nav {
padding: 0 !important;
position: relative;
z-index: 1000000;
}
.ui-tabs-panel.ui-widget-content.ui-corner-bottom {
background-color: #FFFFFF;
color: inherit;
position: relative;
z-index: 10000;
}
.ui-widget-header {
background: #FFFFFF none;
border-style: none;
color: #000;
}
.ui-state-default.ui-corner-top.ui-tabs-active.ui-state-active {
background: #FFFFFF url(http://www.ajaxcontroltoolkit.com/WebResource.axd?d=AGMZY7ihZMorR97dadZHJNLMLUmlGs1IAAjSSQojR1z9vDSKfu9AV_I6UDVbY3n0Ht_3wAr1PwDZxrII3qTy7PxBuhOrrMPPm9aSf0ez-2krTuMH79yQM5UqpVv2rfAWdUFEfP05ctyHi2tucBpF0FiqhM41&t=633679741330000000) repeat-x !important;
border-top-style: none !important;
color: inherit;
line-height: 0.9 !important;
padding-bottom: 1px !important;
top: 0 !important;
}
.ui-state-default.ui-corner-top {
background: #FFFFFF url(http://www.ajaxcontroltoolkit.com/WebResource.axd?d=W4v9Hy4fkzkekDThrsobfTYj6-95kfZ10KKihGm99tZbuY_l3ofA36Jei1gEbKSaOeuE25gPka1oqQEK41fBP_tQ6j-raNjx3bfPxbTWwS4G10LIvb5t08TYwcXm-kc2MlBhvw2&t=633679741330000000) repeat-x 0 -2px !important;
border-left: solid 1px #999999 !important;
border-right: solid 1px #999999 !important;
border-top-style: none !important;
color: inherit;
line-height: 0.8 !important;
top: 0.3em !important;
}
.ui-state-default.ui-corner-top:hover {
background: #FFFFFF url(http://www.ajaxcontroltoolkit.com/WebResource.axd?d=LpBJhML_0RvVpH9_nzWpbHM55rqRzfQLP86L3zQcgsIDrNYrPJwDC8P6cl4iArkt1mQTADliJLb_tTeqLupEXRcRd0ap0pbeeoZeFS8-y23_1ZD_wYgfRv9KSLuWIAqaucbBhvH2h3cWoeoAGmGsp5xO7pU1&t=633679741330000000) repeat-x 0 -2px !important;
border-left: solid 1px #999999 !important;
border-right: solid 1px #999999 !important;
border-top-style: none !important;
color: inherit;
line-height: 0.8 !important;
top: 0.3em !important;
}
.ui-state-default.ui-corner-top.ui-tabs-active.ui-state-active a {
padding: 8px 5px 4px 5px !important;
}
.ui-state-default.ui-corner-top a {
padding: 7px 5px 4px 5px !important;
}
这些功能不需要任何内存费用。
我想您不需要监视,如此精细,您的内存(如私人字节,工作集等)和垃圾收集可以帮助您以良好的方式控制使用。