![]() |
1
3
你可以通过使用 Constrained Execution Regions :
当然,核证的排减量是非常严格的。你不能在他们身上做太多。它们是为代码的关键小部分而设计的。 |
![]() |
2
2
在试图找出我的问题时,我发现这些文章非常有用: Getting the most out of .NET by taking control 最后一篇文章说:
我相信这是我需要做的,以避免我的问题。因为我的应用程序内存非常密集,所以我不能让它把内存浪费到分页文件中,因为这非常非常慢。我需要我的应用程序限制自己的物理内存,以保持性能可接受。但当它确实内存不足时,我需要引发内存不足异常。我不能让应用程序崩溃! 所以,我将实现那篇文章中提到的技术,看看这是否解决了我的问题。不幸的是,这有点复杂,所以这不是一个快速的尝试。 |
![]() |
3
1
在某些情况下,操作系统除了删除进程之外别无选择。为了在进程中引发异常(如堆栈溢出或段错误),内核必须在故障堆栈上写入异常记录,然后才能将控制权交还给进程。如果没有空间来写这个记录,那么这个过程就消失了,你没有办法阻止它。我知道这可能发生的两种情况是,如果在异常堆栈溢出后继续增大堆栈,或者如果无法提交保留的堆栈页,这两种情况都非常罕见。 你最好的办法就是解决腐败问题。试着跑下去 gflags PageHeap 保护。如果您知道异常发生的位置,请尝试在调试器下的缓冲区上设置写入中断点。或者尝试从写模式(例如字符串)或从内存中搜索对缓冲区的引用来标识scribbler post-mortem。 |
![]() |
NOBUD · 最大堆插入函数实现C++ 2 年前 |
![]() |
JimBelushi2 · 合并排序创建内存堆 7 年前 |
![]() |
Arda İbrahim Gökçe · 在遍历最小堆时获取垃圾值 7 年前 |
![]() |
Alexy Grabov · 查找最大堆中k个最大元素的位置 7 年前 |
![]() |
Maxxx · 使用堆在O(N log K)时间内查找前K个元素 7 年前 |
![]() |
Karthik · 限制Go堆接口实现的优先级队列的大小 7 年前 |
![]() |
mourinho · 使用数组实现最小堆[关闭] 7 年前 |