Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 发布代码使用了设计时未看到的大量内存_Vb.net_Visual Studio 2012_Memory Management_Citrix - Fatal编程技术网

Vb.net 发布代码使用了设计时未看到的大量内存

Vb.net 发布代码使用了设计时未看到的大量内存,vb.net,visual-studio-2012,memory-management,citrix,Vb.net,Visual Studio 2012,Memory Management,Citrix,我们有一个WinForms应用程序,它刚刚作为64位构建(64位不是任何cpu)部署在.NET4/vs2012上 当部署到citrix上时,服务器团队建议打开一个表单需要30秒以上的时间,并使用近500mb的内存。一旦打开并显示,内存就会释放回来,然后应用程序只需使用大约30mb的内存 我在本地机器上运行了这段代码,它表现出相同的行为 如果我关闭表单,然后重新打开它,它是即时的 表单并没有发生任何奇怪的事情——令人困惑的是巨大的内存量 但是,如果我在VisualStudio中运行代码,它不会这样

我们有一个WinForms应用程序,它刚刚作为64位构建(64位不是任何cpu)部署在.NET4/vs2012上

当部署到citrix上时,服务器团队建议打开一个表单需要30秒以上的时间,并使用近500mb的内存。一旦打开并显示,内存就会释放回来,然后应用程序只需使用大约30mb的内存

我在本地机器上运行了这段代码,它表现出相同的行为

如果我关闭表单,然后重新打开它,它是即时的

表单并没有发生任何奇怪的事情——令人困惑的是巨大的内存量

但是,如果我在VisualStudio中运行代码,它不会这样做。表单几乎立即显示

我已经完成了代码,就我所知,它没有做任何异常的事情。它没有对数据库进行任何调用,我认为这可能会导致问题,或试图访问外部服务或任何奇怪的事情

如果它只是在citrix下运行的话,我会认为那里发生了一些事情,但它也在我的本地机器上运行(Windows7x64Pro)


有什么建议吗?

我在NET4.5/VS2013上遇到了一个中等复杂的WinForms程序的类似问题。它在DevEnv中几乎是瞬时加载的,但从exe运行时,加载大约需要60秒。在此期间,它将获得约1.2GB的内存,并消耗约15%的CPU资源。加载后,它的内存消耗降至~22MB。如果我在compileoptions页面上选中“preferred32位”选项(使用AnyCPU作为目标CPU),问题就会消失,可执行文件加载速度会非常快。我不知道这是为什么,但嘿,它的工作

500mb的内存非常少。是什么让你认为内存使用与性能问题有关?我猜它需要加载所有需要的程序集,这些程序集在应用程序由VS托管时已经加载。打开表单30秒以上是很奇怪的,但是正如@JohnSaunders指出的,它不必与性能相关。请尝试创建一个,否则很难猜测问题出在哪里。我也运行了一个调试64位版本,只有发布的64位版本占用了这么多额外的时间和大量内存。与应用程序通常占用30-40mb的空间相比,500mb的空间更大。CPU在运行时的命中率也在25%左右。我已经针对64位版本exe运行了Ants配置文件。这是占用所有处理器时间的线路。。。Private drugsTable As DataTable=Nothing这究竟需要85%的处理器时间?(它只是System.Data.DataTable的一种类型)如果我将该行更改为Private drugsTable as DataTable,而不使用初始化器,那么它只会在下一行有一个初始化器的行上挂起。探查器并没有显示它正在表单初始化例程中坐着等待做一些事情,只是在变量声明行。表单有一大堆基础设施控件和其他类似的噩梦般的东西(11个超级网格、7个超级选项卡以及无数其他控件)。我不明白的是为什么它不挂在设计模式下,但在运行时需要20-30秒。