首页 > 其他分享 >34 GB of commited memory but no app actually commited that much

34 GB of commited memory but no app actually commited that much

时间:2023-09-28 16:12:07浏览次数:83  
标签:commited no app RAM share memory sheet data se

34 GB of commited memory but no app actually commited that much

Ask Question Asked 3 years, 8 months ago Modified 3 years, 8 months ago Viewed 493 times   3

Sometimes I encounter Out of memory errors and Windows Event Viewer shows this (translated):

Resource-Exhaustion-Detector: A lack of virtual memory in the system was successfully detected. The largest amount of virtual memory was allocated to the following programs: 10582573056 bytes were allocated for myapp.exe (12412), 916819968 bytes were allocated for firefox.exe (18240) and 794206208 bytes were allocated for firefox.exe (13724).

myapp.exe allocated 10 GB, Firefox.exe-s allocated totally ~4.5 GB, some other stuff 10x150MB (as I check later in Task Manager), so total commit should be 16 GB but since I receive these lack of memory warning I assume that the real commit is about 34 GB (32 GB of RAM + 2 GB pagefile).

What could be that hidden thing with big commit that is neither shown in Task Manager processes nor reported by Resource-Exhaustion-Detector?

Is cached memory shown in Task Manager counted towards commited? If counted then why isn't it freed when another app tries to allocate for its needs (as I understand cached memory just fills not used RAM and should be immediately freed when that memory is required)?

Here is a screenshot of different time when Task Manager shows 19.3 GB commited but if I sum everything in allocated column in Details tab it's ~14.3 GB, not 19.3. 

 

Update

This is not a duplicate of Resource-Exhaustion-Detector: out of virtual memory, but plenty of RAM available

In that previous question I asked why I receive out of memory when I have free RAM, now I know the answer - because I'm out of commited memory. Now I'm asking why I'm running of commited memory while no app actually commits that much. They are different.

None of these either answer my question because they are about having physical memory free but receiving Out of memory errors, but I'm asking about reasons why I have no free virtual memory:

Share Improve this question   edited Jan 12, 2020 at 13:23     asked Jan 12, 2020 at 12:45 Vlad's user avatar Vlad 18011 silver badge1313 bronze badges
  •   @Vlad Much better. I've reopened this one for you.  – DavidPostill♦  Jan 12, 2020 at 13:21
  •   When looking at the processes and their memory consumption I would recommend to use Sysinternals Process Explorer instead of the TaskManager and enable all the different memory columns. This tool also has the advantage that it does not suffer from any translation (usually more on obfuscation that a translation).  – Robert  Jan 12, 2020 at 14:00
  •   Your pagefile is extremely small. It is normally recommended for it to be the size of the RAM. How are you getting the numbers for the programs?  – harrymc  Jan 12, 2020 at 14:10
  •   @harrymc I summed Task Manager's allocated column. Now rechecked with sum of PagedMemorySize in PowerShell and it's 17 GB commited by processes (of 22 GB total commited).  – Vlad  Jan 12, 2020 at 14:21 
  •   @Vlad - Have you set the size of allow Windows to set the size?  – Ramhound  Jan 12, 2020 at 14:35

Why is my "Committed" memory so much higher than my actual RAM space?

Ask Question Asked 8 years ago Modified 2 years, 8 months ago Viewed 298k times

 

I have run two virus scans and neither of them have found anything so far (Malware Bytes and Avira Rescue). During gaming I will get Windows popups saying that my system is low of memory and recommends closing the game. This can also happen while browsing. My computer seems to become sluggish a lot and will hang up often, such as when clicking a link from a messenger program to open in my browser.

I am unsure what is causing this. My memory usage on the processes tab doesn't add up to such a high percentage of my actual memory.


As a side note, is my Disk Usage supposed to spike up to 100% sometimes? Research seems to say so.

Share Improve this question   edited Sep 7, 2017 at 12:04 Daniel B's user avatar Daniel B 60.7k99 gold badges122122 silver badges163163 bronze badges asked Sep 12, 2015 at 7:40 Ryld's user avatar Ryld 55111 gold badge44 silver badges33 bronze badges Add a comment

3 Answers

82

"Why is my “Committed” memory so much higher than my actual RAM space?" Because "committed" is mostly process-private virtual address space, and some of this can be in RAM and some in the pagefile.

And some might not occupy any storage at all! That's if it's been allocated but never accessed, hence not "faulted in", yet. But it still counts against the "commit limit" because if it's it accessed in the future, it will occupy storage then. And that's too late for the system to say "sorry, we're all out of room."

The whole point of virtual memory is that it can be much larger than physical (RAM), no?

btw... you appear to have a pagefile of about 24 GB, since you have 8 GB RAM and the commit limit is 32 GB. So your "committed" could be as high as 32 GB. (And at the moment it almost is that high, so reducing or eliminating the pagefile would be a bad idea.)

Whereas RAM used is just that. So, of course, RAM used + pagefile used can be larger than RAM used.

Part of the whole point of virtual memory, after all, is that you can have more virtual memory in use than you have physical memory (RAM).

If you want to find out what's using committed memory you need to look at Task Manager's "Details" tab and enable the "Commit size" column.

Nor will the total of the "Commit size" columns add up to the "commit charge" (30.1 GB on your machine), because other things contribute to commit charge: Nonpaged and paged pool and some more "subtle" mechanisms like copy-on-write sections, pagefile-backed sections, AWE mappings... but these are usually small compared to process-private v.a.s.)

On that tab, the "Memory (Private working set)" column corresponds to what the "Processes" tab shows for "Memory". This is the RAM currently assigned to each process for its committed virtual address space. The remainder will be in the pagefile. But, again, processes have other types of address space, mostly of the sort called "mapped", and some fraction of that will be in RAM as well. There are other system-wide things created by the OS, not specific to any process, that use up RAM too.

In short the "Processes" tab's "Memory" column is not supposed to add up to the total RAM being used. It only shows how much of the total usage is being used privately by each process.

Share Improve this answer   edited Jul 18, 2017 at 16:53     answered Sep 16, 2015 at 19:02 Jamie Hanrahan's user avatar Jamie Hanrahan 23.2k66 gold badges6363 silver badges9292 bronze badges
  • 2 I was about post "@Ryld If you want to learn more about virtual memory read this really good answer from another question"... Then I noticed that the answer I was linking to was also written by you :). I think I have directed 4 or 5 other questions about virtual memory to that answer, thanks for doing such a good in depth answer.  – Scott Chamberlain  Sep 16, 2015 at 21:09 
  • 1 How does "committed" show 31.9-30.1=1.8GB free, but Windows reports 3.6GB is free? Chrome stops opening tabs when "committed" runs out but Windows would say there is still 1.8G "Available"? This seems incredibly wrong/inaccurate.  – rektide de la faye  Jul 9, 2020 at 19:55
  •   For helping localization on this answer, the "Commit Size" column is named quite different in Spanish as "Tamaño de asignación" ("Assigned Size", no reference wording to memory)  – JCM  Apr 7, 2022 at 10:57
  •   What does the value in the committed signify? For example - does it mean that the RAM should be upgraded to that value?  – variable  May 25, 2022 at 6:15
  •   @JamieHanrahan from the pic, there is 25.8GB (30.1-4.3) stuff swapped to page files. Why there is still space in RAM (7.9-4.3) GB,but finally some stuff finally moved to page file?  – Grace  Jul 29 at 15:25
Add a comment   9

The easy way to think about it is rewind back to 1995.

A high-end PC would have 8 MB of RAM (yes, megabytes). And yet on Windows NT (which became Windows 2000, which became Windows XP) your application's would think that they had access to 2 GB of memory - a number so large it boggles the mind.

And your application could do it:

  • it could allocate 2 GB of memory
  • while the actual PC only has 8 MB of RAM

How could that possibly work? How could my program be actively using 2 GB of memory, when the PC only has 8 MB of RAM? Where is all this stuff going? It's obviously not going into the RAM chips.

The answer is virtual memory

Applications allocate memory in 4 KB chunks called pages. If all the pages in RAM are full:

  • Windows will pick some page in RAM that is rarely used
  • save a copy of that 4 KB page to a page file
  • and then give that newly available page to your application

And what if the program who was using that page needs it?

  • then Windows will detect that your application is trying to access a page that was "swapped" out to the page file
  • free up some other page in RAM
  • fill the contents of the newly available page with the values saved on the hard disk

Your application can then access the page as though nothing happened.

Same is true today

  • you can have "committed" 31 GB of "memory"
  • while only having 16 GB of "RAM"
Share Improve this answer   answered Jan 5, 2021 at 22:21 Ian Boyd's user avatar Ian Boyd 21.7k4949 gold badges139139 silver badges184184 bronze badges
  •   What is your reasoning behind while only having 16 GB of "RAM"? The image from the questions reads: In use 4.2+Available 3.6=7.8 . So why did you write 16FB?  – variable  May 7, 2022 at 12:31
  • 1 @variable That was a typo. Where i wrote "16 GB" it should read "8 GB".  – Ian Boyd  May 7, 2022 at 16:38
Add a comment 6

Windows uses a pagefile, which is like RAM, but stored in your hard drive. It's much slower, but it's useful when you need to use more memory than you have in your computer. Windows stores parts of memory that have not been used for a while in the page file when it needs to store more memory but doesn't have any space in the RAM to store it.

Committed memory is the memory you have in your computer plus the page file. It looks like sometimes programs use too much memory and made windows store some things in the pagefile. The pagefile wasn't big enough to fit all the memory windows was storing in it, so it had to increase its size. It kept increasing its size, until it reached its limit. Now Windows can't further increase the pagefile, which means it can't store any extra memory, so its only option is to tell you to close a few programs to reduce memory usage. The reason your computer is slow is because it needs to load stuff from the pagefile, which is much slower than loading directly from RAM and makes disk usage really high, as the pagefile is stored in the hard drive.

You should not have as many programs open as you do and make sure that your computer has enough memory for the games you're playing and the programs you use. I hope this helps!

 

 

标签:commited,no,app,RAM,share,memory,sheet,data,se
From: https://www.cnblogs.com/ioriwellings/p/17736011.html

相关文章

  • 广告变现小游戏app搭建
      如何搭建广告变现小游戏app?  搭建看广告游戏软件,游戏模式的app。客户都是看到别人有这款软件非常的赚钱,自己就像搭建一个,首先就是看广告软件运营,重要的就是运营推广,让用户前来注册,看广告。软件需要针对不同的用户选择对应的游戏,或者软件的功能类型。  看广告游戏软......
  • nodejs学习01-安装
    参考:nodeJS压缩版安装与配置 注意:最新版本不支持win7有问题,我win7用的 node-v11.15.0-win-x86历史版本下载:https://registry.npmmirror.com/binary.html?path=node/......
  • Spring Cloud智慧工地云服务平台源码 PC端+APP端+数据大屏源码 开箱即用
    智慧工地云服务平台源码 PC端+APP端+数据大屏全套源码 自主版权智慧工地利用移动互联、物联网、云计算、大数据等新一代信息技术,彻底改变传统施工现场各参建方的交互方式、工作方式和管理模式,为建设集团、施工企业、监理单位、设计单位、政府监管部门等提供一揽子工地现场管理信......
  • JAVA导入工程遇见Could not transfer artifact io.rest-assured:rest-assured:pom:4.2
    问题:用idea导入已有的工程,操作File->InvalidateCaches/Restart后,点击右上角的Run,报以下异常:“Couldnottransferartifactio.rest-assured:rest-assured:pom:4.2.0”如下图所示:解决办法:因为Maven目录配置的问题,打开File->NewProjectsSettings->SettingsforNewProjects......
  • Notepad++ 下载与安装教程
    Notepad++下载与安装教程 Notepad++简介Notepad++是程序员必备的文本编辑器,Notepad++中文版小巧高效,支持27种编程语言,通吃C,C++,Java,C#,XML,HTML,PHP,JS等,Notepad++中文版编辑器可完美地取代微软的记事本。一,Notepad++下载1.因为最近官网进不去,所有进人这个网站进......
  • npm 包从 ~/AppData 解析,而未从项目的 node_modules 中解析
    问题描述js文件import*asTHREEfrom"three";ctrl+点击three跳转到的文件为C:\Users\21632\AppData\Local\Microsoft\TypeScript\5.2\node_modules\@types\three\下的文件。而不是项目中根目录下的.\node_modules\three\build\three.js。参考为什么npm包从/AppD......
  • 比较 opacity: 0、visibility: hidden、display: none
    结构display:none:会让元素完全从渲染树中消失,渲染的时候不占据任何空间,不能点击,visibility:hidden:不会让元素从渲染树消失,渲染元素继续占据空间,只是内容不可见,不能点击opacity:0:不会让元素从渲染树消失,渲染元素继续占据空间,只是内容不可见,可以点击继承display:none和op......
  • 前端 - HbuilderX连接模拟器运行App
    HbuilderX连接模拟器运行App最近更换了一台开发电脑,然后将电脑中的HbuilderX和MEmu(逍遥模拟器)全部更新了,结果Hbuilder使用AndroidRun在模拟器上跑不起来安装包了,一直停留在如下页面上。搜索了一大圈之后发现有不少人也遇到了我的这个问题,在官方论坛上开发人员的回复是换一个......
  • k8s版本v1.24,kubectl top pod 报错:error: Metrics API not available
    k8s版本:v1.24.4kubectltoppod报错:error:MetricsAPInotavailable报错Readinessprobefailed:HTTPprobefailedwithstatuscode:500vimcustom-resources.yamlapiVersion:v1kind:ServiceAccountmetadata:labels:k8s-app:metrics-servername:metrics......
  • k8s版本v1.24,kubectl top pod 报错:error: Metrics API not available
    k8s版本:v1.24.4kubectltoppod报错:error:MetricsAPInotavailable报错Readinessprobefailed:HTTPprobefailedwithstatuscode:500vimcustom-resources.yamlapiVersion:v1kind:ServiceAccountmetadata:labels:k8s-app:metrics-servername:metrics-......