首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是“记忆压力”?

什么是“记忆压力”?
EN

Stack Overflow用户
提问于 2018-05-12 12:45:35
回答 1查看 3.5K关注 0票数 9

通过阅读关于垃圾收集的苔丝·费兰德斯的博客,她说,收集有三个可能的原因:

  1. 当您分配一个新对象并达到第0代预算时,即新对象是否会导致其超出预算。
  2. 当有人调用GC.Collect (诱导GC)时
  3. 基于记忆压力

我理解第1点和第2点,但记忆压力在第3点意味着什么?

我原以为这是系统中可用的普通内存,但如果系统真的耗尽了所有内存,那么我可以想象整个系统会出现蓝屏。

记忆压力到底是什么意思?这与超过一代人的预算有什么不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-12 16:59:17

在第3点中,Tess提到Windows在可用内存不足的情况下发送的“低内存通知”。应用程序可能会听取通知--在更糟糕的事情发生之前做出某种反应(例如,保存它的关键数据等等)。行为良好的应用程序甚至可以通过调整自己的内存使用量来帮助操作系统。

CLR正在监听低内存通知。当发生这种情况时,GC就会被触发,通常情况下,它会使GC更具侵略性。这些好处是相互的,因为减少内存压力有助于系统中的所有应用程序(包括.NET应用程序本身)。

当准确地发送低内存通知时,并没有很好地记录下来。根据内部System.Runtime.Caching.PhysicalMemoryMonitor类中的注释(这反过来是基于内部实现的注释),当占用了大约97-99%的物理内存(取决于系统中安装的物理内存数量)时,就会发出低内存通知。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50306410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档