所以,我的问题是关于这个好像正在吞噬我服务器的内存的一个执行程序。它是Windows 2008 R2。重新启动似乎没有帮助,因为提交大小将保持在大约13‘t。这引起了我的注意,因为供应商需要更多的RAM,因为程序的性能问题。
最让我担心的是,这个程序看起来并没有使用它所要求的所有内存。我还没有看到私有工作集内存超过4GB。当用户抱怨速度慢和锁定工作站时,我一直在观察服务器,而且它仍然没有使用所有已提交的内存。
这是内存泄漏吗?为什么这个exe会导致这个问题,为什么当它真正需要它的时候,它不使用它所提交的所有RAM?
也就是说,我正试图拿出具体的证据来证明这是供应商的问题,所以供应商不再试图责怪我。
这是一个VM,作为故障排除步骤,我进入VM设置并确保内存被正确分配,它没有被过度提交,我检查了“无限”内存资源分配。
感谢任何建议或任何额外的疑难解答,我可以尝试!


发布于 2014-05-02 18:37:19
分析工具:如果程序是用.NET编写的,请尝试Yourkit、ants、dotTrace等。如果是原生的,则通过(如UMDH )提供的调试工具是跟踪内存泄漏的好工具。虽然只有在程序及其依赖项的调试符号,最好是源代码的情况下,这才有意义。
虽然内存泄漏有不同的原因,但如果进程的内存消耗没有逐渐增加,我认为应用程序在达到这种内存占用后的使用方式不再泄漏内存。或者只是效率低下。或者因为某种原因,它确实需要13 Or。
现在,如果它会消耗内存,直到耗尽计算机的资源超出操作系统的局限性,那么它很可能有漏洞。
我也建议尝试找出是否有任何操作会触发泄漏。提供步骤复制给您的供应商有帮助。
至于你最初的问题,检查一下这个问题。
参考文献
发布于 2017-08-04 04:00:50
最让我担心的是,这个程序看起来并没有使用它所要求的所有内存。我还没有看到私有工作集内存超过4GB。
它必须是32位,在这种情况下,WS将永远不会超过4GB。
请在这里看到我的答案。https://stackoverflow.com/a/44615376/8177258
在任务管理器中:工作集不是内存使用的度量。指控是。这就是为什么来自W8的任务管理器图现在显示提交而不是WS。
WS是- RAM的数量-操作系统平衡管理器为一个或多个进程设置了锁定。这不是载货。
允许32位应用程序在RAM中锁定最大4GB。64位最多可以锁定8GB。
在x64 (Intel64 64/ any 64)上,32位应用程序的WS是无关的,因为任何进程可用的地址空间都是256 to。它只受CPU和可用存储器的限制。
32位应用程序使用的内存可以轻松地超过它的WS,只是没有计算,因为32位API已经20年了,4GB以外的页面被认为是在分页文件上。
现在,有一半的机器没有分页文件和8GB-16-32GB的RAM。
然而,CPU报告的系统提交费用仍将上升。
打开RamMap,查找待机页面的物理页面,在32位应用程序中查找缺少的工作集数据。
关于RAMMap和VMM。
RAMMapp是很棒的,因为它显示物理内存地址(在一定程度上很好)。你可以从字面上看到页面在哪里。
任务管理器中提交的内存更可靠,因为这是CPU报告的内容。VMM显示支持进程视图之外的任何内容的页面文件,因为一个进程在它的小虚拟世界之外看不到任何东西。
尽管W7/W8/W10对其进行了改进。任务管理器仍然是unreliable...Resource,W7中的监视器不是太bad..limited。
正如有人已经提到的,因为应用程序并没有耗尽所有的资源,它可能不是一个漏洞。当提交的页面未被解压缩时,通常会发生泄漏。
我刚注意到这个问题有多老了.
@Rick Brant
Windows显示的“提交”存储不是RAM。如果需要的话,这是储存的保证。如果曾经使用过,那么存储可能部分在RAM中,部分在分页文件中(假设您有分页文件)。
不对。任务管理器中的已提交内存由CPU报告。它唯一知道的页面是写到物理存储的页面,无论是RAM还是HDD,因为CPU把它们放在那里。
任务管理器中所承诺的数量绝对是RAM。
顺便说一句,你前几天给我看的截图看上去像是在虚拟机上拍的。你有哪一个英特尔处理器有三个核心?
还有:第二个测试是泄漏测试,页面没有被解压缩--这并不意味着它们不在RAM中。PS..What让你觉得DB2是相关的吗?
https://stackoverflow.com/questions/23270046
复制相似问题