草庐IT

windows - 非托管 VC++ 应用程序在 Windows 服务器上的内存消耗

好的,所以我有一个运行在Windows2003服务器上的非常大的多线程非托管C++应用程序(服务器)。它为20-50个执行各种业务逻辑的并发用户托管session...有时由于用户在客户端打开大量窗口而导致对象/session缓存等问题,它可能会使用大量内存(每个窗口都有一个单独的服务器“session”。我们通常会看到超过5-600MB的物理内存和5-600MB的虚拟内存的消耗。一旦达到这一点,我们似乎开始出现“内存不足”错误。现在我知道Windows会在感觉需要释放物理内存时开始页面错误,而且win32应用程序通常只能分配最多4GB的内存,实际上只有2GB可供应用程序实际使用的“用

windows - 了解 Windows 中正在运行的进程的布局(段)的任何工具?

我一直很好奇进程在内存中的具体情况如何?其中有哪些不同的段(部分)?程序(在磁盘上)和进程(在内存中)究竟是如何相关的?我之前的问题:moreinfoonMemorylayoutofanexecutableprogram(process)在我的探索中,我终于找到了答案。我发现这篇优秀的文章清除了我的大部分疑问:http://www.linuxforums.org/articles/understanding-elf-using-readelf-and-objdump_125.html在上面的文章中,作者展示了如何获取进程的不同部分(LINUX),并将其与相应的ELF文件进行了比较。我在

windows - 获取正在运行的进程的分配内存区域

谁能告诉我如何使用WinAPI函数获取某些进程的内存分配内存区域?我想知道每个区域、起始地址、大小和其他一些信息,例如保护类型等。我找不到任何WinAPI函数来执行此操作;-(谁能帮帮我? 最佳答案 有代码可以使用VirtualQueryEx来暴力破解here:MEMORY_BASIC_INFORMATIONmbi;/*Getmaximumaddressrangefromsysteminfo*/GetSystemInfo(&si);/*walkprocessaddresses*/lpMem=0;while(lpMemmbi.Base

windows - 一旦进程结束,进程句柄会发生什么?

如果我有一些已停止(终止或刚刚结束)的Windows进程的句柄:句柄(或者更好的是它背后的内存)是否会被另一个进程重新使用?或者从现在开始,GetExitCodeProcess()等方法会永远得到正确的结果吗?如果1.为真:GetExitCodeProcess()工作“多长时间”?如果2.为真:这是否意味着我可以通过启动/终止新进程来关闭操作系统,因为我创建了越来越多的句柄(并且操作系统为它们保留了内存)?我对句柄的概念有点困惑。提前致谢! 最佳答案 句柄间接指向一个内核对象。只要有打开的句柄,该对象就会保持事件状态。Willthe

java - JNA - 查询 Windows 进程

我正在尝试使用JNA返回特定Windows进程的详细信息。不确定如何执行此操作。在互联网上找不到太多帮助。我想返回的一些信息包括CPU和内存使用情况。下面只是我找到的一个例子。importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.DataInputStream;importjava.io.FileInputStream;importjava.io.FileWriter;importjava.io.IOException;importjava.io.InputStreamReader;importc

windows - 如何通过批处理或脚本文件判断进程是否正在运行?

这个问题在这里已经有了答案:Howtocheckifaprocessisrunningviaabatchscript(19个回答)关闭6年前。如何使用批处理文件判断特定进程是否正在运行?例如,如何判断notepad.exe是否正在运行?

python - python "failed to create process"

我是Python新手。我刚刚安装了Python(anacondapython2.7)并且在启动Anaconda提示时发生了一些“无法创建进程”所以这里有人可以帮我吗?我感谢每一个帮助。 最佳答案 我遇到了完全相同的错误,因为我的用户名包含一个空格。("C:\Users\native")最简单的解决方案是将Anaconda安装到用户文件夹中的另一个文件夹,例如公开。(使用pip时出现同样的错误,查看https://stackoverflow.com/a/35275384/6580199)

windows - 帮助我了解 Process Explorer 中的这些内存统计信息

我正在尝试对我的大型财务计算运行所需的内存量进行非常粗略的测量。它是一个非常简单的命令行工具,可以为大量金融工具定价,然后打印出结果。我决定使用ProcessExplorer查看程序的内存需求。有人可以解释一下屏幕截图中标记为a和b的两个字段之间的区别吗:我目前认为:标记为“a”(峰值专用字节数)的值是在任何瞬间分配给进程的最大内存量(磁盘上的实际物理内存和虚拟内存)。标记为“b”(PealWorkingSet)的值是进程生命周期中任何时刻分配的最大物理内存量。 最佳答案 来自here:Theworkingsetisthesetof

c# - 以用户身份运行我的程序

Windows7、Vista、Server2008、UAC已激活程序必须声明具有管理员权限才能进行某些安装操作。之后,我希望我的程序在非管理员权限下继续工作。如何在没有管理权限的情况下重新启动它?附言我的程序自行重新安装。我不想为它分发任何额外的程序。所以我的步骤是:在临时目录中下载新版本在管理员权限下自行重启重命名旧的exe文件并从临时目录复制新的exe文件在非管理员权限下自行重启 最佳答案 在UAC下,现在强烈建议不要“在第一次运行时”做任何事情。此外,使用自己动手技术更新自身的程序会发现更困难。你说你不想分发额外的程序,但在U

c++ - 如何查找给定应用程序是否为单实例?

我正在寻找一种有效的方法来确定给定的应用程序(比如app.exe)是否是单实例?我想到了以下这些sol:执行两次CreateProcess()并检查该应用程序是否有两个或更多实例在运行?如果不是,则为单实例应用程序。但是,这效率不高。执行CreateProcess()并等待1-2秒。如果这个实例被杀死(因为已经有一个实例在为它运行),它将是单实例应用程序。但我对以上两个sol都不满意。在Windows中还有其他有效的方法吗?请注意,我不会终止该应用程序的已运行(如果有)实例或对其进行任何修改。 最佳答案 换个角度想:你写程序的时候,