Jus*_*tin 11 windows memory-management
注意:我知道内存密集型应用程序中的内存管理问题,但是这个问题似乎是关于频繁进行内存分配的应用程序,而我的问题是关于有意设计消耗尽可能多的物理内存的应用程序.
我有一个服务器应用程序,它使用大量内存来执行缓存和其他优化(想想SQL Server).应用程序在专用计算机上运行,因此可以(并且应该)消耗尽可能多的内存,以便加速和增加吞吐量和响应时间,而无需担心影响系统上的其他应用程序.
麻烦的是,如果内存使用被低估,或者负载增加,最终可能会因内存分配失败而导致令人讨厌的失败 - 在这种情况下,最好的做法是释放内存以防止故障,但代价是表现.
一些假设:
我的问题是 - 我应该如何在这样的应用程序中处理内存分配? 特别是:
核心目标是防止因使用太多内存而导致的故障,同时尽可能多地占用内存.
我是一个C#开发人员,但我希望任何这样的应用程序的基本概念都是相同的,无论语言如何.
在linux中,内存使用百分比分为以下几个级别。
0 - 30% - 不交换 30 - 60% - 仅交换脏页 60 - 90% - 也基于 LRU 策略交换干净页。
90% - 调用 OOM(内存不足)杀手并终止消耗最大内存的进程。
检查这个 - http://linux-mm.org/OOM_Killer
认为 Windows 可能有类似的策略,因此您可以检查内存统计信息并确保永远不会达到最大阈值。
停止消耗更多内存的一种方法是进入睡眠状态并为内存清理线程提供更多运行时间。
| 归档时间: |
|
| 查看次数: |
919 次 |
| 最近记录: |