我创建了一个多线程服务来执行图像处理。一切正常,直到我们的客户之一将产品安装在具有大量内存的16台进程服务器中。现在该服务会抛出大量内存不足错误,这是可以理解的,因为无论安装了多少进程,进程只能获得1.5GB的内存。多线程/多进程窗口服务
这种情况的公认解决方案是什么?这个服务应该产生一个单独的工作进程吗?我应该每个CPU有一个工作进程通过命名管道与主服务进行通信吗?
EDIT我们是一个64位服务器上运行,但不能因为目标成像库限制
64谢谢
我创建了一个多线程服务来执行图像处理。一切正常,直到我们的客户之一将产品安装在具有大量内存的16台进程服务器中。现在该服务会抛出大量内存不足错误,这是可以理解的,因为无论安装了多少进程,进程只能获得1.5GB的内存。多线程/多进程窗口服务
这种情况的公认解决方案是什么?这个服务应该产生一个单独的工作进程吗?我应该每个CPU有一个工作进程通过命名管道与主服务进行通信吗?
EDIT我们是一个64位服务器上运行,但不能因为目标成像库限制
64谢谢
这有多种解决方案。这些是一些选项:
选项#1和#2最容易实现,#5最难。
编辑 我注意到C#
标记在您的问题。对于托管应用程序,您仍然可以使用EditBin.exe tool使用大地址识别标志。
在64位Windows上,大型地址感知应用程序实际上可以访问整个4 GB地址空间。 –
谢谢。选项3不会给我太多,因为代码炸毁是必须是32位的。不幸的是,我没有选择2。从Windows服务中,选项4似乎被怀疑地看待。现在在选项1上 - 是否可以用于.net应用程序? –
@布莱恩 - 从我个人的经验上次我做到了,我能够分配2.5 Gig。不是很完整的4 Gig,但肯定超过了2 Gig的默认限制。 –
这是一个64位机吗?如果是,则构建您的程序集以将目标设置为x64,而不是x86。 – ken2k
是的,不幸的是我无法定位到x64,因为目前还没有可以在该平台上运行的图像库。我们使用Leadtools。 –
有完整源代码示例的最终解决方案? – Kiquenet