当可用内存低于某个限制(用户可配置)时,是否有办法获取通知?我查看了WM_HIBERNATE事件,但似乎此事件的限制不是用户可配置的,并且是硬编码的(160KB ??)。 我能想到的唯一方法是通过GlobalMemoryStats()API定期轮询操作系统(每5秒钟一次)获取可用内存,如果可用内存低于用户配置的限制,则向用户发出一个事件。还有更好的方法吗?
此通知必须适用于以Windows CE 5.0开头的设备。 Windows Mobile 6.5
答案 0 :(得分:2)
操作系统中没有什么固有的东西可以告诉你内存低于任意级别,没有。您可以在应用程序中进行轮询或创建为您执行此操作的服务/驱动程序,这是最佳方式。哪个“更好”取决于是否只有一个流程需要了解通知。
答案 1 :(得分:2)
如果这是你的应用程序可以耗尽内存,那么你可以实现一些代码来拦截这种低内存情况,然后系统才会这样做。一些提示:
覆盖你的新的malloc或任何其他分配内存的函数,每次检查分配是否会耗尽内存。
如果你害怕你会减慢你的应用程序(你应该:))然后使用一些内存管理器,如Dougs Lee malloc.c,你可以修改是这样每次它从系统抓取另一个64KB块内存,你将检查系统内存是否不是太低
你可以从注册表中读取什么是低内存级别,你会发现这些条目:WLC的HKLM \ System \ Hibernate和WM的HKLM \ System \ OOM。