如何限制特定类可以分配的内存?

我在运行时将几个外部程序集加载到我的应用程序中。我需要限制每个外部程序集中定义的特定类可以使用的内存量,例如,每个实例10 MB,否则我们得到OutOfMemory。 我用谷歌搜索了最好的方法,并找到了一些关于CLR运行时托管的信息。这似乎是我需要的东西,但我找不到任何好的例子。 任何人都可以使用CLR运行时托管共享代码示例或者一些关于内存管理的链接吗? 或者也许有一些更好的解决方案来限制每个类的内存量? 提前致谢。     
已邀请:
这不是通过CLR托管可以做到的事情。如果您托管CLR,则可以满足从GC到Windows的分配要求,例如:因此,它使用一些其他分配器而不是VirtualAlloc。但是,每次分配对象时都不会调用主机(这会太昂贵)。 理论上,您可以使用CLR Profiling API来实现此目的。它允许您在分配对象时接收回调。 但是,我害怕你试图从错误的角度看待这个问题。您是否可以尝试将这些外部程序集隔离到单独的进程中,而不是限制类实例使用的内存量,这可能会使用Win32作业对象API限制它们?     
如果你的目标是限制个别进程内存消耗,我认为你应该使用Process类的'MaxWorkingSet'属性。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.diagnostics.process.maxworkingset.aspx     

要回复问题请先登录注册